{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/data.service.ts","webpack:///./src/app/desktop-header/desktop-header.component.html","webpack:///./src/app/desktop-header/desktop-header.component.scss","webpack:///./src/app/desktop-header/desktop-header.component.ts","webpack:///./src/app/drop-filter.pipe.ts","webpack:///./src/app/mobile-menu/mobile-menu.component.html","webpack:///./src/app/mobile-menu/mobile-menu.component.scss","webpack:///./src/app/mobile-menu/mobile-menu.component.ts","webpack:///./src/app/result/result.component.html","webpack:///./src/app/result/result.component.scss","webpack:///./src/app/result/result.component.ts","webpack:///./src/app/search-screen/search-screen.component.html","webpack:///./src/app/search-screen/search-screen.component.scss","webpack:///./src/app/search-screen/search-screen.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\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { AppComponent } from './app.component';\nimport { SearchScreenComponent } from './search-screen/search-screen.component';\nimport { ResultComponent } from './result/result.component';\n\n\nconst routes: Routes = [\n {\n path: '',\n component: SearchScreenComponent\n },\n {\n path: 'result',\n component: ResultComponent\n },\n {\n path: '**',\n redirectTo: ''\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","module.exports = \"\\n\\n\\n\"","module.exports = \"\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'app';\n\n constructor() { }\n\n onActivate() {\n window.scroll(0, 0);\n // workaround to prevent browser from remembering the scroll position of phase 1 and takes the user to the same positon on phase 2\n }\n\n}\n","import { BrowserModule, Title } from '@angular/platform-browser';\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { DataService } from './data.service';\nimport { SearchScreenComponent } from './search-screen/search-screen.component';\nimport { ResultComponent } from './result/result.component';\n\nimport { BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport {\n MatCheckboxModule,\n MatAutocompleteModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n MatFormFieldModule\n} from '@angular/material';\nimport { DropFilterPipe } from './drop-filter.pipe';\nimport { MobileMenuComponent } from './mobile-menu/mobile-menu.component';\nimport { DesktopHeaderComponent } from './desktop-header/desktop-header.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n SearchScreenComponent,\n ResultComponent,\n DropFilterPipe,\n MobileMenuComponent,\n DesktopHeaderComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n HttpClientModule,\n FormsModule,\n NgbModule.forRoot(),\n\n MatCheckboxModule,\n MatAutocompleteModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n MatFormFieldModule,\n BrowserAnimationsModule,\n ReactiveFormsModule,\n InfiniteScrollModule\n ],\n providers: [\n DataService,\n Title\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { environment } from '../environments/environment';\nimport { HttpClient } from '@angular/common/http';\n\nconst API_URL = environment.apiUrl;\nconst API_ENDPOINT = environment.apiEndpoint;\n\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class DataService {\n constructor(\n private http: HttpClient\n ) { }\n\n // API :GET data for harvey/helical search screen component\n getSectionGroups(brand: string, sectionGroupType: string, sectionGroup: string) {\n return this.http.get(API_URL + API_ENDPOINT +\n '/section-groups?brand=' + brand +\n '§ionGroupType=' + sectionGroupType +\n '§ionGroup=' + sectionGroup);\n }\n\n getSearchResult(searchApiObject: JSON) {\n return this.http.post(API_URL + API_ENDPOINT + '/products', searchApiObject);\n }\n\n getHelpData(brand: string) {\n return this.http.get(API_URL + API_ENDPOINT + '/help?brand=' + brand);\n }\n\n getDataFilter(dataFilterApiObject: JSON) {\n return this.http.post(API_URL + API_ENDPOINT + '/filters', dataFilterApiObject);\n }\n}\n","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n 800.645.5609\\n \\n \\n contact\\n \\n \\n \\n \\n \\n products\\n \\n \\n check stock\\n \\n \\n catalogs\\n \\n \\n custom tools\\n \\n \\n find a distributor\\n \\n \\n tech info\\n \\n \\n about\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n About Us\\n \\n \\n Our Brands\\n \\n \\n In the Loupe\\n \\n \\n Machining Advisor Pro\\n \\n \\n Careers\\n \\n \\n Contact Us\\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"/* colors */\\n.desktop-header {\\n margin-bottom: 25px; }\\n@media (max-width: 992px) {\\n .desktop-header {\\n display: none; } }\\n.desktop-header .top-row {\\n padding: 5px 180px 5px 30px;\\n position: relative;\\n width: 100%; }\\n.desktop-header .top-row.primary {\\n border-bottom: 3px solid #cccccc; }\\n.desktop-header .top-row.secondary {\\n background-color: #333333;\\n border-bottom: 3px solid white; }\\n.desktop-header .small-logo {\\n height: 25px;\\n display: inline-block;\\n margin: 0 10px; }\\n.desktop-header .small-logo.adjust {\\n height: 35px; }\\n.desktop-header .small-logo img {\\n height: 100%; }\\n.desktop-header .right-container {\\n position: absolute;\\n right: 10px;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n width: 190px;\\n text-align: right;\\n padding: 5px; }\\n.desktop-header .right-container .social-icon {\\n margin: 0 5px;\\n display: inline-block; }\\n.desktop-header .right-container .social-icon img {\\n height: 23px; }\\n.desktop-header .middle-row {\\n height: 110px;\\n position: relative;\\n padding: 30px 180px 20px 10px; }\\n.desktop-header .middle-row.secondary {\\n background-color: black;\\n padding: 40px 180px 40px 40px;\\n height: auto; }\\n.desktop-header .middle-row .left-logo > img,\\n .desktop-header .middle-row .left-logo > a > img {\\n height: 50px; }\\n.desktop-header .right-info {\\n position: absolute;\\n right: 0;\\n bottom: 15px; }\\n.desktop-header .right-info.secondary {\\n right: 20px;\\n bottom: 20px; }\\n.desktop-header .right-info .phone-number {\\n text-align: right;\\n padding: 10px; }\\n.desktop-header .right-info .phone-number.harvey {\\n padding: 10px 0px 10px 10px; }\\n.desktop-header .right-info .phone-number h3 {\\n color: #1c3e77;\\n letter-spacing: .1rem;\\n font-weight: 700; }\\n.desktop-header .right-info .phone-number h3.harvey {\\n font-family: Arial Black;\\n font-size: 19px; }\\n.desktop-header .right-info .phone-number h3.secondary {\\n color: white; }\\n.desktop-header .right-info .phone-number h3.secondary.helical {\\n font-size: 22px;\\n font-family: 'Play', sans-serif; }\\n.desktop-header .right-info a.button-like {\\n display: block;\\n cursor: pointer;\\n height: 40px;\\n border: 0.5px solid #333333;\\n text-align: center;\\n padding: 5px; }\\n.desktop-header .right-info a.button-like:hover {\\n text-decoration: none; }\\n.desktop-header .right-info a.button-like.primary {\\n background-color: #9a0000;\\n padding: 10px; }\\n.desktop-header .right-info a.button-like.secondary {\\n background-color: #006633;\\n width: 180px; }\\n.desktop-header .right-info a.button-like p {\\n text-transform: uppercase;\\n color: white; }\\n.desktop-header .right-info a.button-like p.helical {\\n font-weight: 700;\\n font-size: 20px; }\\n.desktop-header .right-info a.button-like p.harvey {\\n font-family: Arial Black;\\n font-size: 13px; }\\n.desktop-header .bottom-row {\\n width: 100%;\\n display: flex;\\n flex-wrap: nowrap;\\n justify-content: space-between; }\\n.desktop-header .bottom-row.primary {\\n background-color: #1c3e77; }\\n.desktop-header .bottom-row.secondary {\\n background-color: #333333;\\n border-top: 3px solid white; }\\n.desktop-header .bottom-row a.bottom-link {\\n cursor: pointer;\\n text-align: center;\\n padding: 15px 20px; }\\n.desktop-header .bottom-row a.bottom-link:hover {\\n text-decoration: none; }\\n.desktop-header .bottom-row a.bottom-link.primary {\\n background-color: #1c3e77;\\n padding: 14px 28px; }\\n.desktop-header .bottom-row a.bottom-link + .primary {\\n border-left: 1px solid white; }\\n.desktop-header .bottom-row a.bottom-link.hpc {\\n padding: 7px 47px;\\n border: 0.5px solid #333333;\\n background-color: #1c3e77; }\\n.desktop-header .bottom-row a.bottom-link p,\\n .desktop-header .bottom-row a.bottom-link h4 {\\n color: white;\\n text-transform: uppercase;\\n margin: 0 auto; }\\n.desktop-header .bottom-row a.bottom-link p.arial-font {\\n font-family: Arial Black !important;\\n font-size: 13px; }\\n.desktop-header .top-row-gray {\\n background-color: #e8e8e8;\\n height: 40px;\\n width: 100%;\\n display: block;\\n padding: 10px 30px; }\\n.desktop-header .top-row-gray .small-logo {\\n height: 20px; }\\n.desktop-header .top-row-gray .right-container {\\n right: 30px;\\n top: 0; }\\n.desktop-header .top-row-gray .right-container .social-icon {\\n padding: 18px 3px 2px 0;\\n margin: 0; }\\n.desktop-header .top-row-gray .right-container .social-icon img {\\n margin-left: 5px; }\\n.desktop-header .top-row-gray .right-container .social-icon + .social-icon {\\n border-left: 1px solid #e1e1e1; }\\n.desktop-header .max-width-content {\\n position: relative;\\n display: block;\\n margin: 0 auto; }\\n.desktop-header .main-part {\\n width: 100%;\\n display: block;\\n padding: 40px 30px 40px 40px;\\n border-bottom: 3px solid #cccccc; }\\n.desktop-header .links-part {\\n position: absolute;\\n right: 35px;\\n top: 10px;\\n text-align: right; }\\n.desktop-header .links-part a.link {\\n display: inline-block;\\n margin: 0 15px; }\\n.desktop-header .links-part a.link:hover {\\n text-decoration: none; }\\n.desktop-header .links-part a.link p {\\n color: #2c353d;\\n font-size: 14px;\\n font-family: 'Lato', sans-serif; }\\n@media (max-width: 1250px) {\\n .desktop-header .main-part {\\n padding: 30px 30px 70px 30px; }\\n .desktop-header .links-part {\\n top: 60px;\\n width: 710px;\\n right: 50%;\\n -webkit-transform: translateX(50%);\\n transform: translateX(50%); } }\\n\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-desktop-header',\n templateUrl: './desktop-header.component.html',\n styleUrls: ['./desktop-header.component.scss']\n})\nexport class DesktopHeaderComponent implements OnInit {\n\n public ifHarvey: boolean;\n public brand: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private titleService: Title\n ) { }\n\n checkBrand() {\n this.activatedRoute.queryParams.subscribe(params => {\n if (!params.brand || (params.brand !== 'harvey' && params.brand !== 'helical' && params.brand !== 'hpc')) {\n // if query params not exists, set the default to harvey\n this.brand = 'harvey';\n } else {\n this.brand = params.brand;\n }\n\n this.ifHarvey = this.brand !== 'helical';\n\n if (this.brand === 'helical') {\n this.titleService.setTitle('Find a Tool – Helical');\n } else {\n this.titleService.setTitle('Find a Tool – Harvey Tool');\n }\n });\n }\n\n ngOnInit() {\n this.checkBrand();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dropFilter'\n})\n\nexport class DropFilterPipe implements PipeTransform {\n transform(items: any[], searchText: any): any[] {\n if (!items) {return []; }\n if (!searchText) {return items; }\n searchText = searchText.toString().toLowerCase();\n return items.filter( it => {\n return it.toLowerCase().includes(searchText);\n });\n }\n}\n","module.exports = \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Tool Details Definitions\\n Start Over\\n Harveytool.com\\n \\n Products\\n Check Stock\\n Catalogs\\n Custom Tools\\n Find a Distributor\\n Tech Info\\n About\\n Contact us\\n \\n \\n Tool Details Definitions\\n Start Over\\n \\n \\n Tool Details Definitions\\n Start Over\\n Our Brands\\n \\n In the Loupe\\n Machining Advisor Pro\\n Careers\\n About Us\\n Contact Us\\n \\n \\n \\n \\n\"","module.exports = \"/* colors */\\n/* only displays on tablet and mobile */\\n.app-top {\\n display: none;\\n position: relative;\\n width: 100%;\\n margin-bottom: 20px; }\\n.app-top .top-logo {\\n padding: 20px 20px 10px 30px;\\n border-bottom: 2px solid #ccd1cf; }\\n.app-top .top-logo.secondary {\\n border-bottom: 2px solid black;\\n padding: 20px 20px 10px 25px; }\\n.app-top .top-logo img {\\n height: 50px;\\n display: block; }\\n.app-top .hamburger-menu {\\n z-index: 9;\\n padding: 10px;\\n position: absolute;\\n bottom: -80px;\\n left: 20px;\\n width: 65px;\\n cursor: pointer; }\\n.app-top .hamburger-menu span {\\n height: 6px;\\n margin-bottom: 7px;\\n width: 100%;\\n display: block; }\\n.app-top .hamburger-menu.primary span {\\n background-color: #1c3e77; }\\n.app-top .hamburger-menu.secondary span {\\n background-color: #0B7E55; }\\n.app-top .transparent-part {\\n position: fixed;\\n background-color: transparent;\\n left: -110vw;\\n top: 0;\\n bottom: 0;\\n width: 100vw;\\n height: 100vh;\\n z-index: 10;\\n transition: .3s all ease-in-out; }\\n.app-top .transparent-part.show {\\n -webkit-transform: translateX(110vw);\\n transform: translateX(110vw); }\\n.app-top .transparent-part .menu-cover {\\n width: 50vw;\\n height: 100vh;\\n z-index: 15; }\\n.app-top .transparent-part .content-part {\\n display: inline-block;\\n width: 50vw;\\n height: 100vh; }\\n.app-top .transparent-part .content-part.primary {\\n background-color: #1c3e77; }\\n.app-top .transparent-part .content-part.secondary {\\n background-color: #0B7E55; }\\n.app-top .transparent-part .logo-section {\\n padding: 40px 30px; }\\n.app-top .transparent-part .logo-section img {\\n max-width: 100%; }\\n.app-top .transparent-part .link-section {\\n padding: 20px 40px; }\\n.app-top .transparent-part .link-section span {\\n width: 100%;\\n height: 3px;\\n background-color: #ebecec;\\n margin: 30px 0;\\n display: block; }\\n.app-top .transparent-part .link-section a, .app-top .transparent-part .link-section button {\\n display: block;\\n color: #ebecec;\\n padding: 10px;\\n font-size: 1rem;\\n letter-spacing: .05rem; }\\n.app-top .transparent-part .link-section button.mobile-link {\\n background-color: transparent;\\n border: none;\\n min-width: auto;\\n margin: 0;\\n text-align: left; }\\n.app-top .transparent-part .link-section button.mobile-link.inactive {\\n color: #64666b;\\n pointer-events: none; }\\n@media (max-width: 540px) {\\n .app-top {\\n margin-bottom: 15px; }\\n .app-top .top-logo {\\n padding: 20px 10px 10px 20px; }\\n .app-top .top-logo.secondary {\\n padding: 20px 10px 10px 20px; }\\n .app-top .top-logo img {\\n height: 30px; }\\n .app-top .hamburger-menu {\\n width: 55px;\\n bottom: -55px; }\\n .app-top .hamburger-menu span {\\n height: 4px;\\n margin-bottom: 5px; }\\n .app-top .menu-cover .logo-section {\\n padding: 20px 15px; }\\n .app-top .menu-cover .link-section {\\n padding: 10px 20px; }\\n .app-top .menu-cover .link-section span {\\n margin: 20px 0; }\\n .app-top .menu-cover .link-section a, .app-top .menu-cover .link-section button {\\n padding: 5px 10px;\\n font-size: 0.8rem; } }\\n@media (max-width: 992px) {\\n .app-top {\\n display: block; } }\\n/* prevent ios body still scrolling after modal opening issue*/\\nbody.no-scroll {\\n overflow: hidden;\\n position: relative;\\n height: 100%; }\\n.container.no-scroll {\\n overflow: hidden;\\n pointer-events: none; }\\n\"","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport * as $ from 'jquery';\n\n@Component({\n selector: 'app-mobile-menu',\n templateUrl: './mobile-menu.component.html',\n styleUrls: ['./mobile-menu.component.scss']\n})\nexport class MobileMenuComponent implements OnInit {\n\n public ifHarvey: boolean;\n public ifPhase2: boolean;\n public brand: string;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private titleService: Title\n ) { }\n\n checkHarvey() {\n this.activatedRoute.queryParams.subscribe(params => {\n if (!params.brand || (params.brand !== 'harvey' && params.brand !== 'helical' && params.brand !== 'hpc')) {\n // if query params not exists, set the default to harvey\n this.brand = 'harvey';\n } else {\n this.brand = params.brand;\n }\n\n this.ifHarvey = this.brand !== 'helical';\n\n if (this.brand === 'helical') {\n this.titleService.setTitle('Find a Tool – Helical');\n } else {\n this.titleService.setTitle('Find a Tool – Harvey Tool');\n }\n });\n }\n\n checkPhase() {\n if (this.activatedRoute.snapshot.routeConfig.path === 'result') {\n this.ifPhase2 = true;\n } else {\n this.ifPhase2 = false;\n }\n }\n\n displayToolDef() {\n $('#helpButton').click();\n }\n\n startOver() {\n // resolve 'overflow: hidden' on body not working issue in ios\n $('html').css({\n 'position': 'relative', 'height': 'auto', 'overflow': 'auto'\n });\n this.router.navigate([''], { queryParams: { brand: this.brand } });\n $('.container').removeClass('no-scroll');\n $('body').removeClass('no-scroll');\n }\n\n mobileShowMenu() {\n $('.transparent-part').addClass('show');\n $('.container').addClass('no-scroll');\n $('body').addClass('no-scroll');\n // resolve 'overflow: hidden' on body not working issue in ios\n $('html').css({\n 'position': 'relative', 'height': '100%', 'overflow': 'hidden'\n });\n }\n\n mobileHideMenu($event) {\n if ($event.target.id === 'mobileMenu') {\n $('.transparent-part').removeClass('show');\n $('.container').removeClass('no-scroll');\n $('body').removeClass('no-scroll');\n // resolve 'overflow: hidden' on body not working issue in ios\n $('html').css({\n 'position': 'relative', 'height': 'auto', 'overflow': 'auto'\n });\n }\n }\n\n ngOnInit() {\n this.checkHarvey();\n this.checkPhase();\n }\n}\n","module.exports = \"\\n\\n\\n \\n \\n FIND A TOOL\\n Further refine your search by selecting specific tool features and dimensions below. As your preferred tool becomes specified, irrelevant search terms will fade.\\n \\n \\n \\n \\n \\n \\n Filter By\\n \\n {{primaryFilterBySelector}} : {{primaryResult}}\\n X \\n \\n \\n \\n \\n {{breadCrumb.filter}} : {{breadCrumb.value}}\\n X \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n Sort\\n \\n \\n \\n \\n \\n \\n \\n Filter\\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n Total Results :\\n {{resultLength}}\\n \\n {{resultLength}} Results\\n \\n \\n \\n \\n \\n \\n Price: High to Low\\n Price: Low to High\\n Availability\\n \\n \\n \\n \\n \\n \\n \\n Compare Selected ({{compareResultsNum}})\\n \\n X \\n \\n \\n Compare Selected\\n \\n \\n \\n \\n \\n Only Three Tools Can Be Compared\\n \\n Please deselect one of the tools you've already chosen to compare.\\n OK\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Tool Style\\n {{filterTool}}\\n X\\n \\n \\n \\n \\n \\n \\n {{tool}}\\n \\n \\n \\n \\n Operation\\n {{filterOperation}}\\n X\\n \\n \\n \\n \\n \\n \\n {{oper}}\\n \\n \\n \\n \\n \\n \\n \\n \\n {{mat}}\\n \\n \\n \\n New Search\\n \\n \\n \\n Filter By Tool Details\\n \\n \\n \\n \\n Search by a specific dimension(s). Results will automatically refresh based on input below.\\n \\n \\n \\n Tool Details Definitions\\n \\n ×\\n \\n \\n \\n \\n \\n {{helpData.label}}\\n \\n \\n {{helpData.text}}\\n \\n \\n \\n Clear\\n \\n \\n \\n \\n \\n Filter\\n Clear ALL\\n \\n \\n \\n \\n \\n \\n Inch (in)\\n \\n \\n \\n Metric (mm)\\n \\n \\n \\n \\n \\n {{dataFilter.label}}\\n \\n \\n \\n \\n \\n selected value :\\n \\n \\n \\n \\n {{output}}\\n \\n \\n \\n \\n \\n \\n \\n {{filterValue}}\\n \\n \\n \\n \\n \\n {{dataFilter.label}}\\n \\n \\n \\n {{filterValue}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Please further narrow your search!\\n We have many tools that will work for your specified material. To continue, please indicate an operation or a tool style!\\n \\n \\n Please select a Tool Type, Material or Operation to continue your search or select New Search to start over\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Technical Info\\n \\n \\n Product Page\\n \\n \\n \\n \\n \\n {{result.name}}\\n \\n \\n \\n \\n {{result.description}}\\n \\n \\n \\n {{result.sku}}\\n \\n \\n Available :\\n {{result.quantity}}\\n {{result.listPrice | currency}}\\n \\n \\n \\n = 3\\\">\\n \\n Compare\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n compare tooling\\n Review the information below to determine which tool is right for your job. Differences in key dimensions among compared tooling will appear highlighted. For additional information on the differences among your compared tooling, please\\n contact the Harvey Performance technical support teams.\\n \\n X \\n \\n \\n Tool Images\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n Technical Info\\n \\n \\n Product Page\\n \\n \\n \\n \\n \\n {{result.name}}\\n \\n \\n \\n \\n {{result.description}}\\n \\n \\n \\n {{result.sku}}\\n \\n \\n Available :\\n {{result.quantity}}\\n {{result.listPrice | currency}}\\n \\n \\n \\n \\n \\n \\n Tool Dimensions\\n \\n \\n \\n \\n \\n {{detail.name}}\\n {{detail.value}}\\n \\n \\n \\n \\n \\n \\n \\n\"","module.exports = \"/* colors */\\n.block-background-click {\\n display: none;\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n background: none;\\n z-index: 1; }\\n.block-background-click.show {\\n display: block; }\\n.phase2 {\\n /* phase 2 responsive starts here */ }\\n.phase2 .min-height {\\n min-height: 900px; }\\n.phase2 .mobile-show {\\n display: none; }\\n.phase2 .filter-content {\\n padding: 15px 0 15px 80px;\\n position: relative; }\\n.phase2 .filter-content h4.absolute-position {\\n color: #707070;\\n position: absolute;\\n left: 0;\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%); }\\n.phase2 .filter-content .filter-container {\\n display: inline-block; }\\n.phase2 .filter-content .filters {\\n display: inline-block;\\n padding-right: 35px;\\n position: relative;\\n margin: 10px; }\\n.phase2 .filter-content .filters button.red-cancel {\\n top: 50%;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n bottom: auto; }\\n.phase2 .filter-content .filters .primary {\\n color: #1e3f77;\\n font-size: 1rem;\\n font-weight: 700; }\\n.phase2 .filter-content .filters .secondary {\\n color: #0B7E55;\\n font-size: 1rem;\\n font-weight: 700; }\\n.phase2 .top-panel {\\n height: 80px; }\\n.phase2 .total-result {\\n padding: 10px 0;\\n margin: 10px 0 10px 20px; }\\n.phase2 .total-result.primary {\\n color: #1c3d77; }\\n.phase2 .total-result.secondary {\\n color: #0B7E55; }\\n.phase2 .total-result.mobile {\\n display: none; }\\n.phase2 .total-result span {\\n color: #222; }\\n.phase2 .compare-section {\\n position: relative;\\n padding-top: 8px;\\n padding-right: 60px; }\\n.phase2 .compare-section h4.more-margin {\\n text-align: right;\\n margin-left: 0;\\n margin-right: 0;\\n color: #D12229; }\\n.phase2 .compare-section h4.more-margin.gray {\\n color: #5b6665; }\\n.phase2 .compare-section button {\\n display: inline-block; }\\n.phase2 .top-panel a {\\n color: #5b6665; }\\n.phase2 .top-panel a:hover {\\n text-decoration: none;\\n color: #222; }\\n.phase2 .toolTip {\\n margin: 40px 0; }\\n.phase2 .toolTip h4 {\\n color: #707070;\\n margin-bottom: 20px;\\n letter-spacing: .03rem; }\\n.phase2 .toolTip .right-icon {\\n float: right;\\n cursor: pointer; }\\n.phase2 .toolTip p {\\n color: #707070; }\\n.phase2 .drop-down {\\n padding: 10px;\\n margin: 10px 0;\\n border-bottom: 2px solid #707070;\\n min-width: 200px;\\n position: relative; }\\n.phase2 .drop-down a {\\n color: #5b6665; }\\n.phase2 .drop-down a:hover {\\n text-decoration: none;\\n color: #222; }\\n.phase2 .drop-down span {\\n position: absolute;\\n right: 5px;\\n top: 15px; }\\n.phase2 .top-dropdown {\\n padding-top: 15px;\\n margin-bottom: -15px; }\\n.phase2 .mock-top-dropdown {\\n cursor: not-allowed;\\n height: 50px;\\n border-bottom: 2px solid #707070;\\n position: relative;\\n margin-top: 10px;\\n padding: 25px 25px 5px 15px;\\n overflow: hidden; }\\n.phase2 .mock-top-dropdown span.upper-label {\\n position: absolute;\\n top: 0;\\n left: 10px;\\n color: #5b6665;\\n font-size: 0.7rem;\\n font-weight: bold;\\n letter-spacing: .01rem; }\\n.phase2 .mock-top-dropdown h4 {\\n letter-spacing: 0rem;\\n font-weight: 400;\\n word-break: break-all; }\\n.phase2 .more-margin {\\n margin: 20px 10px; }\\n.phase2 .with-border {\\n border-bottom: 2px solid #707070;\\n height: 45px;\\n padding: 10px 0; }\\n.phase2 .with-border.more-height {\\n height: auto;\\n padding-left: 20px; }\\n.phase2 .with-border.dark-bg {\\n background-color: #b1b1b1;\\n padding: 10px 20px; }\\n.phase2 .with-border.dark-bg span {\\n color: white;\\n font-size: 1.2rem;\\n font-weight: 700;\\n letter-spacing: 0.1rem; }\\n.phase2 .with-border .form-check-inline {\\n width: 50%;\\n margin-right: 0; }\\n.phase2 .fixed-label {\\n font-size: 1.2rem;\\n color: #222;\\n margin-bottom: 10px; }\\n.phase2 .form-check-label.light-color {\\n color: #707070;\\n padding: 3px 0; }\\n.phase2 .message {\\n padding: 100px 0;\\n color: #707070;\\n text-align: center;\\n width: 400px;\\n margin: auto; }\\n.phase2 .message h2 {\\n margin-bottom: 30px; }\\n.phase2 .right-panel {\\n display: block;\\n height: 100%; }\\n.phase2 .result-cards-container {\\n display: flex;\\n flex-wrap: wrap;\\n margin: 0 auto; }\\n.phase2 .fixed-img {\\n position: fixed;\\n width: 60px;\\n margin: 0 auto;\\n height: 45px;\\n bottom: 50px;\\n right: 26vw;\\n text-align: right;\\n z-index: 5; }\\n.phase2 #sortSelect {\\n padding-left: 15px; }\\n.phase2 #sortSelect .mat-select-arrow-wrapper {\\n visibility: hidden; }\\n.phase2 #sortSelect.primary .mat-select-value {\\n color: #1e3f77; }\\n.phase2 #sortSelect.secondary .mat-select-value {\\n color: #0B7E55; }\\n@media (max-width: 1200px) {\\n .phase2 .fixed-img {\\n right: 15vw; }\\n .phase2 h2.total-result.mobile-hide {\\n font-size: 1.2rem;\\n margin: 15px 0 0 15px;\\n padding-bottom: 0; }\\n .phase2 .with-border > .form-check-inline {\\n width: auto;\\n margin-right: 10px; } }\\n@media (max-width: 992px) {\\n .phase2 {\\n /* data filters mobile */ }\\n .phase2 .min-height {\\n min-height: auto; }\\n .phase2.container-fluid {\\n padding: 0; }\\n .phase2.container-fluid .row {\\n margin-right: -1px;\\n margin-left: -1px; }\\n .phase2.container-fluid .col-6 {\\n padding-left: 1px;\\n padding-right: 1px; }\\n .phase2 .top-panel {\\n height: auto; }\\n .phase2 .result-cards-container {\\n max-width: 685px; }\\n .phase2 .header {\\n text-align: center;\\n font-size: 2rem;\\n margin-bottom: 20px; }\\n .phase2 .header.primary {\\n color: #1c3e77; }\\n .phase2 .header.secondary {\\n color: #0B7E55; }\\n .phase2 .compare-section {\\n display: none; }\\n .phase2 p.extra-margin {\\n display: none; }\\n .phase2 .mobile-hide {\\n display: none; }\\n .phase2 .mobile-show {\\n display: block; }\\n .phase2 .total-result.mobile {\\n display: block;\\n float: right; }\\n .phase2 .p-header {\\n text-align: center;\\n color: white;\\n padding: 10px 0;\\n margin-bottom: 10px; }\\n .phase2 .p-header h2 {\\n pointer-events: none;\\n padding-right: 30px;\\n position: relative;\\n margin: auto;\\n max-width: 70px; }\\n .phase2 .p-header.primary {\\n background-color: #1c3e77; }\\n .phase2 .p-header.secondary {\\n background-color: #0B7E55; }\\n .phase2 .p-header span.hide {\\n position: absolute;\\n pointer-events: none;\\n right: 0px;\\n top: 40%;\\n width: 14px;\\n height: 3px;\\n background-color: white;\\n z-index: 5; }\\n .phase2 .p-header span.hide.vertical {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n -webkit-transform: all 0.3s ease;\\n transform: all 0.3s ease; }\\n .phase2 .mobile-filters,\\n .phase2 .mobile-sort {\\n display: none;\\n position: absolute;\\n z-index: 15;\\n top: 39px;\\n right: 0;\\n width: 50vw;\\n background-color: #ebecec; }\\n .phase2 .mobile-filters.show,\\n .phase2 .mobile-sort.show {\\n display: block; }\\n .phase2 .mobile-filters {\\n top: 39px;\\n right: 0; }\\n .phase2 .mobile-sort {\\n top: 39px;\\n left: 0;\\n padding-top: 10px; }\\n .phase2 .with-border {\\n padding: 10px 40px; }\\n .phase2 .mobile-label {\\n font-size: 0.9rem;\\n color: #707070; }\\n .phase2 .with-border > .form-check-inline {\\n width: 50%;\\n margin: 0; } }\\n@media (max-width: 712px) {\\n .phase2 .result-cards-container {\\n max-width: 460px; } }\\n@media (max-width: 540px) {\\n .phase2 h1.header {\\n font-size: 1.5rem;\\n margin: 5px 0 20px 0; }\\n .phase2 .message {\\n width: auto; }\\n .phase2 .mobile-filters {\\n width: 250px; }\\n .phase2 .with-border {\\n padding: 10px 10px 10px 20px; }\\n .phase2 .with-border.dark-bg {\\n padding: 5px 20px; }\\n .phase2 .with-border.dark-bg span {\\n font-size: 1rem;\\n float: left;\\n margin-top: 3px; }\\n .phase2 .total-result {\\n margin: 0;\\n padding: 5px 0; }\\n .phase2 .col-lg-9.col-md-12.less-padding {\\n padding-left: 5px;\\n padding-right: 5px; } }\\n@media (max-width: 992px) {\\n .container.full-width {\\n max-width: 100%;\\n padding: 0;\\n position: relative; }\\n h2 {\\n font-size: 1rem; } }\\n@media (min-width: 576px) and (max-width: 768px) {\\n .container.phase2 {\\n max-width: 100%; } }\\n.compare-header {\\n margin: 30px auto 20px auto; }\\n.compare-text {\\n text-align: center;\\n color: #707070; }\\n.modal-body {\\n padding: 1rem 2rem; }\\n.compare-selections .header-part {\\n position: relative;\\n margin: 20px 0;\\n padding-right: 50px; }\\n.compare-selections .header-part h1 {\\n color: #222;\\n text-transform: uppercase;\\n margin-bottom: 15px;\\n font-size: 2rem; }\\n.compare-selections .header-part button.close-compare-modal {\\n position: absolute;\\n right: 10px;\\n top: -5px;\\n color: #222;\\n font-size: 2rem;\\n font-weight: 700; }\\n.compare-selections .tool-header {\\n margin: 15px 0;\\n text-align: center;\\n padding: 10px; }\\n.compare-selections .tool-header.primary {\\n background-color: #1c3e77; }\\n.compare-selections .tool-header.secondary {\\n background-color: #0B7E55; }\\n.compare-selections .tool-header h3 {\\n color: white; }\\n.compare-selections .results-panel {\\n display: flex;\\n margin: auto;\\n justify-content: center; }\\n.compare-selections .table-panel {\\n border-top: 2px solid #ccd1cf; }\\n.compare-selections .table-panel .comparison-detail {\\n border-bottom: 2px solid #ccd1cf;\\n display: flex;\\n justify-content: center;\\n height: 50px; }\\n.compare-selections .table-panel .comparison-detail.yellow {\\n background-color: #fff33e; }\\n.compare-selections .table-panel .single-detail {\\n padding: 30px 5px 0 40px;\\n position: relative;\\n width: 225px; }\\n.compare-selections .table-panel .single-detail span {\\n position: absolute;\\n top: 5px;\\n left: 40px;\\n font-size: 0.8rem;\\n color: #5b6665; }\\n.compare-selections .table-panel .single-detail h6 {\\n margin-bottom: 3px; }\\n.sort-option-panel {\\n margin-top: 45px;\\n margin-left: -8px; }\\n.mat-option.mat-selected.mat-active.primary {\\n color: #1e3f77; }\\n.mat-option.mat-selected.mat-active.secondary {\\n color: #0B7E55; }\\n\"","import {\n Component,\n OnInit,\n ViewChildren,\n ViewChild,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { DataService } from \"../data.service\";\nimport { Router, ActivatedRoute } from \"@angular/router\";\n\nimport { FormControl } from \"@angular/forms\";\nimport { map, startWith } from \"rxjs/operators\";\nimport { Observable } from \"rxjs\";\nimport * as $ from \"jquery\";\n\nimport { MatAutocompleteTrigger } from \"@angular/material\";\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\n\n@Component({\n encapsulation: ViewEncapsulation.None,\n selector: \"app-result\",\n templateUrl: \"./result.component.html\",\n styleUrls: [\"./result.component.scss\"]\n})\nexport class ResultComponent implements OnInit {\n public ifHarvey: boolean;\n public brand: string;\n public ifMobile: boolean;\n public ifMaterial: boolean;\n public ifNew: boolean;\n public searchBy: any = []; // importing value from searchScreenComponent\n\n public filterTool: string;\n public filterOperation: string;\n public filterMaterial: string;\n public filterSort: string;\n public filteredToolLabels: Observable;\n public filteredOperationLabels: Observable;\n public filteredMaterialLabels: Observable;\n\n public searchByToolControl: FormControl = new FormControl();\n public searchByOperationControl: FormControl = new FormControl();\n public searchByMaterialControl: FormControl = new FormControl();\n public sortByControl: FormControl = new FormControl(\"Availability\");\n\n public searchApiObject: any = {}; // build json to do http post request for searchResults data\n\n public resultLength: string;\n public searchResults: any = [];\n public loadPage: number;\n public totalPages: number;\n public returnToTopBtn: boolean;\n\n public toolLabels: any = [];\n public operationLabels: any = [];\n public materialLabels: any = [];\n\n public filterOutputIndexValue = [];\n // element is ARRAY, element of ARRAY is obejct {'index':x, 'value':y}\n // filterOutputIndexValue needs to be cleared out after submit the dataFilterApiObj and reassign the value in patchValue()\n public filterOutputObj: any = {};\n public filterCurrentInput = [];\n // element is string, only for two way data binding to filter input and display values\n\n public path: string;\n public primarySelector: string; // 'tool style' or 'operations'\n public primaryFilterBySelector: string; // 'Tool Style' or 'Operation'\n public primaryResult: string;\n public dataFilterArray: any = [];\n public dataFilterApiObject: any = {}; // build json to do http post for datafilters, equals to this.seachApiObject without page property\n public filterOptionValues: any = []; // elements are objects with 2 keys 'propertyName' and 'filterValues'\n public breadCrumbFilterArr: any = []; // elements are objects with 3 keys 'ifMainFilter' , 'filter' and 'value'\n\n public helpDataArray: any = [];\n public helpPropertyNameArray: any = [];\n public helpLabelArray: any = [];\n public filteredHelpData: any = [];\n\n public compareResultsArr: any = [];\n public compareResultsNum: number;\n public compareTableArr: any = [];\n\n @ViewChildren(MatAutocompleteTrigger) triggerCollection: QueryList<\n MatAutocompleteTrigger\n >;\n @ViewChild(\"helpTemplate\")\n private helpTemplate: TemplateRef;\n\n @ViewChild(\"compareSelectionsTemplate\")\n private compareSelectionsTemplate: TemplateRef;\n\n @ViewChild(\"compareWarningTemplate\")\n private compareWarningTemplate: TemplateRef;\n\n constructor(\n private _data: DataService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private modalService: NgbModal\n ) {\n this.path = this.router.url; // check activated route url\n this.loadPage = 1;\n this.compareResultsNum = 0;\n this.breadCrumbFilterArr = [];\n this.returnToTopBtn = false;\n this.filterSort = \"Availability\";\n }\n\n checkUrl() {\n this.activatedRoute.queryParams.subscribe(params => {\n if (\n !params.brand ||\n (params.brand !== \"harvey\" &&\n params.brand !== \"helical\" &&\n params.brand !== \"hpc\")\n ) {\n // if query params not exists, set the default to harvey\n this.router.navigate([\"result\"], { queryParams: { brand: \"harvey\" } });\n this.brand = \"harvey\";\n } else {\n this.brand = params.brand;\n // has to seperate the brand assignment to prevent fail api call.\n }\n if (params.toolStyle) {\n this.filterTool = params.toolStyle;\n } else {\n this.filterTool = \"\";\n }\n if (params.operation) {\n this.filterOperation = params.operation;\n } else {\n this.filterOperation = \"\";\n }\n if (params.material) {\n this.filterMaterial = params.material;\n } else {\n this.filterMaterial = \"\";\n }\n if (params.ps === \"toolStyle\") {\n this.primarySelector = \"toolStyle\";\n this.primaryFilterBySelector = \"Tool Style\";\n this.primaryResult = this.filterTool;\n } else if (params.ps === \"operation\") {\n this.primarySelector = \"operation\";\n this.primaryFilterBySelector = \"Operation\";\n this.primaryResult = this.filterOperation;\n } else {\n this.primarySelector = \"\";\n this.primaryFilterBySelector = \"\";\n this.primaryResult = \"\";\n }\n this.ifHarvey = this.brand !== \"helical\";\n });\n }\n\n getHelpToolTip() {\n this._data.getHelpData(this.brand).subscribe(\n data => {\n this.helpDataArray = [];\n this.filteredHelpData = [];\n this.helpDataArray = data;\n for (let i = 0; i < this.helpPropertyNameArray.length; i++) {\n this.filteredHelpData.push({\n label: this.helpLabelArray[i],\n text: \"No description yet\"\n });\n for (let j = 0; j < this.helpDataArray.length; j++) {\n if (\n this.helpDataArray[j][\"propertyName\"] ===\n this.helpPropertyNameArray[i]\n ) {\n this.filteredHelpData[i][\"text\"] = this.helpDataArray[j][\"text\"];\n }\n }\n }\n },\n err => console.error(err)\n );\n }\n\n getSearchResults() {\n this.searchByToolControl.patchValue(this.filterTool);\n this.searchByOperationControl.patchValue(this.filterOperation);\n this.searchByMaterialControl.patchValue(this.filterMaterial);\n if (this.changeSearchResult()) {\n this._data.getSearchResult(this.searchApiObject).subscribe(\n data => {\n if (this.loadPage === 1) {\n this.returnToTopBtn = false;\n this.manageDataFilterForBreadCrumb();\n this.compareClear();\n this.searchResults = [];\n this.searchResults = data[\"records\"];\n this.resultLength = data[\"totalRecords\"];\n this.totalPages = data[\"totalPages\"];\n this.getDataFilters(this.dataFilterApiObject);\n } else if (this.loadPage > 1) {\n this.searchResults = this.searchResults.concat(data[\"records\"]);\n }\n },\n err => {\n console.error(err);\n this.searchResults = [];\n this.resultLength = \"0\";\n }\n );\n } else {\n this.searchResults = [];\n }\n }\n\n addEllipsis() {\n const name = $(\".name\");\n const nameWrapper = $(\".name-wrapper\");\n const desc = $(\".detail-text\");\n const descWrapper = $(\".detail-text-wrapper\");\n let i = 0;\n while (i < desc.length) {\n while ($(name[i]).outerHeight() > $(nameWrapper[i]).outerHeight()) {\n $(name[i]).text(function(index, text) {\n return text.replace(/\\W*\\s(\\S)*$/, \"...\");\n });\n }\n while ($(desc[i]).outerHeight() > $(descWrapper[i]).outerHeight()) {\n $(desc[i]).text(function(index, text) {\n return text.replace(/\\W*\\s(\\S)*$/, \"...\");\n });\n }\n i++;\n }\n }\n\n stringifyFilterOptions() {\n if (this.dataFilterArray === undefined) {\n return;\n }\n for (let i = 0; i < this.dataFilterArray.length; i++) {\n if (typeof this.dataFilterArray[i][\"filterValues\"][0] !== \"string\") {\n for (\n let j = 0;\n j < this.dataFilterArray[i][\"filterValues\"].length;\n j++\n ) {\n if (\n this.dataFilterArray[i][\"filterValues\"][j] === undefined ||\n this.dataFilterArray[i][\"filterValues\"][j] === null\n ) {\n this.dataFilterArray[i][\"filterValues\"].splice(j, 1);\n // remove all the undefined / null values in the filterValues\n }\n if (this.dataFilterArray[i][\"filterValues\"][j] !== undefined) {\n this.dataFilterArray[i][\"filterValues\"][j] = this.dataFilterArray[\n i\n ][\"filterValues\"][j].toString();\n }\n }\n }\n }\n }\n\n matchPrimarySelector(noSpaceString: string) {\n // match the primary selector in order to get the dataFilterArray\n if (noSpaceString === \"toolStyle\") {\n return \"tool style\";\n } else if (noSpaceString === \"operation\") {\n return \"operations\";\n }\n }\n\n getDataFilters(dataFilterApiObject: any = {}) {\n this.helpPropertyNameArray = [];\n this.helpLabelArray = [];\n if (this.primarySelector.length !== 0 && this.primaryResult.length !== 0) {\n this._data.getDataFilter(dataFilterApiObject).subscribe(\n data => {\n if (Object.keys(data).length !== 0) {\n this.dataFilterArray =\n data[this.matchPrimarySelector(this.primarySelector)][\n this.primaryResult.toLowerCase()\n ];\n this.stringifyFilterOptions();\n if (this.dataFilterArray !== undefined) {\n // change the displayType for coating to \"CheckBox\", instead of \"TypeAhead\"\n if (\n this.dataFilterArray[this.dataFilterArray.length - 1][\n \"label\"\n ] === \"Coating\"\n ) {\n this.dataFilterArray[this.dataFilterArray.length - 1][\n \"displayType\"\n ] = \"CheckBox\";\n }\n for (let i = 0; i < this.dataFilterArray.length; i++) {\n if (\n this.helpPropertyNameArray.indexOf(\n this.dataFilterArray[i][\"propertyName\"]\n ) === -1\n ) {\n this.helpPropertyNameArray.push(\n this.dataFilterArray[i][\"propertyName\"]\n );\n }\n if (\n this.helpLabelArray.indexOf(\n this.dataFilterArray[i][\"label\"]\n ) === -1\n ) {\n this.helpLabelArray.push(this.dataFilterArray[i][\"label\"]);\n }\n\n this.filterCurrentInput[i] = \"\";\n this.filterOutputIndexValue[i] = [];\n if (dataFilterApiObject[\"dataFilters\"].length === 0) {\n // first time load the page\n // loop through dataFilterArray and add more keys(selectedValues, inputDisplay) and set the value to []\n this.filterOutputObj[\n this.dataFilterArray[i][\"propertyName\"]\n ] = [];\n } else {\n // patchPreviousData\n if (\n i >= 0 &&\n i < this.dataFilterArray.length - 1 &&\n this.dataFilterArray[i][\"selectedFilterValues\"].length !== 0\n ) {\n // don't check the selectedFilterValues for check boxes\n this.dataFilterArray[i][\"withChoice\"] = true; // add withChoice field to determine the class of the dropdown div\n this.filterCurrentInput[i] = this.dataFilterArray[i][\n \"selectedFilterValues\"\n ].join(\", \");\n for (\n let k = 0;\n k <\n this.dataFilterArray[i][\"selectedFilterValues\"].length;\n k++\n ) {\n const val = this.dataFilterArray[i][\n \"selectedFilterValues\"\n ][k];\n const index = this.dataFilterArray[i][\n \"filterValues\"\n ].indexOf(val);\n this.filterOutputIndexValue[i].push({\n index: index,\n value: val\n });\n if (index !== -1) {\n delete this.dataFilterArray[i][\"filterValues\"][index];\n }\n }\n } else if (\n i > 0 &&\n i < this.dataFilterArray.length - 1 &&\n this.dataFilterArray[i][\"selectedFilterValues\"].length === 0\n ) {\n // initialize the dropdowns which have selected values previously\n this.dataFilterArray[i][\"withChoice\"] = false;\n this.filterCurrentInput[i] = \"\";\n this.filterOutputIndexValue[i] = [];\n }\n }\n }\n this.getHelpToolTip();\n }\n }\n },\n err => {\n console.error(err);\n },\n () => this.addEllipsis()\n );\n }\n }\n\n deleteFilterFromBreadCrumb(x: string) {\n for (let i = 0; i < this.breadCrumbFilterArr.length; i++) {\n if (this.breadCrumbFilterArr[i][\"propertyName\"] === x) {\n this.breadCrumbFilterArr.splice(i, 1);\n }\n }\n if (x === \"toolStyle\" || x === \"operation\" || x === \"material\") {\n this.changeFilterValue(x, \"no selection\");\n } else if (this.filterOptionValues.length !== 0) {\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n if (this.filterOptionValues[i][\"propertyName\"] === x) {\n this.filterOptionValues.splice(i, 1);\n i--; // important! the splice would change the index in the array, so the index i needs to be check again\n }\n }\n }\n this.loadPage = 1;\n this.getSearchResults();\n }\n\n changeFilterValue(search: string, newValue: string) {\n this.resultLength = \"\";\n this.dataFilterArray = [];\n this.loadPage = 1;\n if (newValue !== \"no selection\") {\n if (search === \"toolStyle\") {\n this.filterTool = newValue;\n if (this.primarySelector.length !== 0) {\n this.router.navigate([\"result\"], {\n queryParams: { toolStyle: this.filterTool },\n queryParamsHandling: \"merge\"\n });\n } else {\n this.router.navigate([\"result\"], {\n queryParams: { ps: \"toolStyle\", toolStyle: this.filterTool },\n queryParamsHandling: \"merge\"\n });\n this.setPrimarySelector(\"toolStyle\", \"Tool Style\", this.filterTool);\n }\n } else if (search === \"operation\") {\n this.filterOperation = newValue;\n if (this.primarySelector.length !== 0) {\n this.router.navigate([\"result\"], {\n queryParams: { operation: this.filterOperation },\n queryParamsHandling: \"merge\"\n });\n } else {\n this.router.navigate([\"result\"], {\n queryParams: { ps: \"operation\", operation: this.filterOperation },\n queryParamsHandling: \"merge\"\n });\n this.setPrimarySelector(\n \"operation\",\n \"Operation\",\n this.filterOperation\n );\n }\n } else if (search === \"material\") {\n this.filterMaterial = newValue;\n if (this.primarySelector.length !== 0) {\n this.router.navigate([\"result\"], {\n queryParams: { material: this.filterMaterial },\n queryParamsHandling: \"merge\"\n });\n } else {\n this.router.navigate([\"result\"], {\n queryParams: { brand: this.brand, material: this.filterMaterial }\n });\n }\n }\n } else {\n newValue = null;\n if (search === \"toolStyle\") {\n this.filterTool = \"\";\n this.router.navigate([\"result\"], {\n queryParams: { toolStyle: newValue },\n queryParamsHandling: \"merge\"\n });\n } else if (search === \"operation\") {\n this.filterOperation = \"\";\n this.router.navigate([\"result\"], {\n queryParams: { operation: newValue },\n queryParamsHandling: \"merge\"\n });\n } else if (search === \"material\") {\n this.filterMaterial = \"\";\n this.router.navigate([\"result\"], {\n queryParams: { material: newValue },\n queryParamsHandling: \"merge\"\n });\n }\n }\n $(\"input\").blur();\n this.getSearchResults();\n }\n\n setPrimarySelector(\n newSelector: string,\n newFilter: string,\n newResult: string\n ) {\n this.primarySelector = newSelector;\n this.primaryFilterBySelector = newFilter;\n this.primaryResult = newResult;\n this.getSearchByFilterData();\n }\n\n changeSortValue(newValue: string) {\n this.filterSort = newValue;\n this.loadPage = 1;\n this.getSearchResults();\n }\n\n patchFormControl() {\n // if user don't make any choice, the selection remains the same as previous one\n // but would not get new search result\n this.searchByToolControl.patchValue(this.filterTool);\n this.searchByOperationControl.patchValue(this.filterOperation);\n this.searchByMaterialControl.patchValue(this.filterMaterial);\n this.sortByControl.patchValue(this.filterSort);\n }\n\n changeSearchResult() {\n this.dataFilterApiObject = {};\n this.searchApiObject = {};\n this.searchApiObject[\"brand\"] = this.brand;\n this.searchApiObject[\"page\"] = this.loadPage;\n this.searchApiObject[\"sort\"] = this.filterSort;\n\n if (this.filterOptionValues.length !== 0) {\n this.searchApiObject[\"dataFilters\"] = this.filterOptionValues;\n } else {\n this.filterOptionValues = [];\n }\n this.searchApiObject[\"dataFilters\"] = this.filterOptionValues;\n\n if (this.filterTool.length !== 0) {\n this.ifMaterial = false;\n this.searchApiObject[\"toolStyle\"] = this.filterTool;\n this.addMainFilterToBreadCrumb(\n \"toolStyle\",\n \"Tool Style\",\n this.filterTool\n );\n }\n\n if (this.filterOperation.length !== 0) {\n this.ifMaterial = false;\n this.searchApiObject[\"operation\"] = this.filterOperation;\n this.addMainFilterToBreadCrumb(\n \"operation\",\n \"Operation\",\n this.filterOperation\n );\n }\n\n if (this.filterMaterial.length !== 0) {\n if (\n !(\"toolStyle\" in this.searchApiObject) &&\n !(\"operation\" in this.searchApiObject)\n ) {\n this.ifMaterial = true;\n } else {\n this.ifMaterial = false;\n }\n this.searchApiObject[\"material\"] = this.filterMaterial;\n this.addMainFilterToBreadCrumb(\n \"material\",\n \"Material\",\n this.filterMaterial\n );\n }\n this.ifNew =\n this.filterTool.length === 0 &&\n this.filterOperation.length === 0 &&\n this.filterMaterial.length === 0;\n this.dataFilterApiObject = JSON.parse(JSON.stringify(this.searchApiObject)); // a deep copy of seachApiObject\n delete this.dataFilterApiObject.page;\n this.checkMainFilterInBreadCrumb();\n return JSON.stringify(this.searchApiObject);\n }\n\n addMainFilterToBreadCrumb(\n propertyName: string,\n filter: string,\n newValue: string\n ) {\n let find = 0;\n for (let i = 0; i < this.breadCrumbFilterArr.length; i++) {\n if (\n this.breadCrumbFilterArr[i][\"ifMainFilter\"] &&\n this.breadCrumbFilterArr[i][\"propertyName\"] === propertyName\n ) {\n this.breadCrumbFilterArr[i][\"value\"] = newValue;\n find++;\n }\n }\n if (find === 0) {\n this.breadCrumbFilterArr.push({\n ifMainFilter: true,\n propertyName: propertyName,\n filter: filter,\n value: newValue\n });\n }\n }\n\n checkMainFilterInBreadCrumb() {\n for (let i = 0; i < this.breadCrumbFilterArr.length; i++) {\n // remove primary filter\n if (\n this.breadCrumbFilterArr[i][\"ifMainFilter\"] &&\n this.breadCrumbFilterArr[i][\"propertyName\"] === this.primarySelector\n ) {\n this.breadCrumbFilterArr.splice(i, 1);\n i--;\n }\n }\n\n for (let i = 0; i < this.breadCrumbFilterArr.length; i++) {\n if (\n this.breadCrumbFilterArr[i][\"ifMainFilter\"] &&\n this.searchApiObject.hasOwnProperty(\n this.breadCrumbFilterArr[i][\"propertyName\"]\n ) === false\n ) {\n // remove previous filter that has been deleted this time\n this.breadCrumbFilterArr.splice(i, 1);\n i--;\n }\n }\n }\n\n initializeDataFilterForBreadCrumb() {\n // delete all the non-main-filters in breadCrumbFilterArray\n for (let i = 0; i < this.breadCrumbFilterArr.length; i++) {\n if (this.breadCrumbFilterArr[i][\"ifMainFilter\"] === false) {\n this.breadCrumbFilterArr.splice(i, 1);\n i--; // important! the splice would change the index in the array, so the index I needs to be check again\n }\n }\n }\n\n manageDataFilterForBreadCrumb() {\n // TODO: better to use label for breadCrumb display, instead of converted propertyName and some exceptions\n // if need to use label, search for this.filterOptionValues\n // added 'label' field to this.filterOptionValues in this.toggleDropdown() and this.changeCheckbox()\n // make use of this.filterOptionValues[i]['label'] for this.breadCrumbFilterArr[j]['filter']\n // in this.changeSearchResult(), delete the 'label' field and then assign this.filterOptionValues to this.searchApiObject['dataFilters']\n this.initializeDataFilterForBreadCrumb();\n if (this.filterOptionValues.length !== 0) {\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n const optionValue = this.filterOptionValues[i];\n if (\n optionValue[\"propertyName\"] === \"Inch/Metric\" ||\n optionValue[\"propertyName\"] === \"Inch\" ||\n optionValue[\"propertyName\"] === \"Metric\"\n ) {\n // handle Inch/Metric\n const value = optionValue[\"filterValues\"].join(\", \");\n this.breadCrumbFilterArr.push({\n ifMainFilter: false,\n filter: \"Inch/Metric\",\n propertyName: optionValue[\"propertyName\"],\n value: value\n });\n } else if (optionValue[\"propertyName\"] === \"coating\") {\n const value = optionValue[\"filterValues\"].join(\", \");\n // there should be only 1 coating at a time, but if user is fast enough, he is able to select 2 before the UI refreshes\n this.breadCrumbFilterArr.push({\n ifMainFilter: false,\n filter: \"Coating\",\n propertyName: optionValue[\"propertyName\"],\n value: value\n });\n } else {\n // all other filters only display length\n const filter = this.replaceUnderscoreAndCapitalize(\n optionValue[\"propertyName\"]\n );\n const length = optionValue[\"filterValues\"].length;\n const value = length + \" Selected\";\n this.breadCrumbFilterArr.push({\n ifMainFilter: false,\n filter: filter,\n propertyName: optionValue[\"propertyName\"],\n value: value\n });\n }\n }\n }\n }\n\n getSearchByFilterData() {\n this.getSearchByData(\n this.brand,\n \"toolStyles\",\n \"Tool Style\",\n this.toolLabels,\n this.filteredToolLabels,\n this.searchByToolControl\n );\n this.getSearchByData(\n this.brand,\n \"operations\",\n \"Operation\",\n this.operationLabels,\n this.filteredOperationLabels,\n this.searchByOperationControl\n );\n this.getSearchByData(\n this.brand,\n \"materials\",\n \"Material\",\n this.materialLabels,\n this.filteredMaterialLabels,\n this.searchByMaterialControl\n );\n }\n\n // getSearchByData() to get the filtering labels for the 3 top filters in the left panel\n getSearchByData(\n brand: string,\n filter: string,\n placeHolder: string,\n labels: any = [],\n filteredLabels: Observable,\n searchLabelControl: FormControl\n ) {\n this._data\n .getSectionGroups(brand, this.primarySelector, this.primaryResult)\n .subscribe(\n data => {\n labels.length = 0;\n for (let i = 0; i < data[filter].length; i++) {\n for (\n let j = 0;\n j < data[filter][i][\"sectionGroupItems\"].length;\n j++\n ) {\n labels.push(data[filter][i][\"sectionGroupItems\"][j][\"label\"]);\n }\n }\n labels.unshift(\"no selection\");\n if (filteredLabels === this.filteredToolLabels) {\n this.filteredToolLabels = this.searchByToolControl.valueChanges.pipe(\n startWith(\"\"),\n map(val =>\n val.length >= 1\n ? this.filter(this.toolLabels, val)\n : this.toolLabels\n )\n // don't call the filter until the user actually typed something,\n // to prevent \"dropdown not open when input is actually focused\" issue\n );\n } else if (filteredLabels === this.filteredOperationLabels) {\n this.filteredOperationLabels = this.searchByOperationControl.valueChanges.pipe(\n startWith(\"\"),\n map(val =>\n val.length >= 1\n ? this.filter(this.operationLabels, val)\n : this.operationLabels\n )\n );\n } else if (filteredLabels === this.filteredMaterialLabels) {\n this.filteredMaterialLabels = this.searchByMaterialControl.valueChanges.pipe(\n startWith(\"\"),\n map(val =>\n val.length >= 1\n ? this.filter(this.materialLabels, val)\n : this.materialLabels\n )\n );\n }\n },\n err => console.error(err)\n );\n }\n\n filter(x: any = [], val: string): string[] {\n return x.filter(label => label.toLowerCase().includes(val.toLowerCase()));\n }\n\n newSearch() {\n // cleans all filters and search results but stay on Phase 2\n this.resultLength = \"\";\n this.filterMaterial = \"\";\n this.filterOperation = \"\";\n this.filterTool = \"\";\n this.primarySelector = \"\";\n this.primaryFilterBySelector = \"\";\n this.primaryResult = \"\";\n this.dataFilterArray = [];\n this.filteredHelpData = [];\n this.getSearchByFilterData();\n\n this.clearFilters();\n this.compareClear();\n this.router.navigate([\"result\"], { queryParams: { brand: this.brand } });\n }\n\n startOver() {\n // direct user to Phase 1\n this.router.navigate([\"\"], { queryParams: { brand: this.brand } });\n }\n\n clearFilters() {\n this.filterOptionValues = [];\n if (this.dataFilterArray === undefined) {\n return;\n }\n this.loadPage = 1;\n $(\".input-dropdown\").removeClass(\"done-with-choice\");\n $(\".outside-box\").prop(\"checked\", false);\n this.initializeDataFilterForBreadCrumb();\n this.getSearchResults();\n }\n\n onScrollDown() {\n if (this.loadPage <= this.totalPages) {\n this.getScrollPosition();\n this.loadPage++;\n this.getSearchResults();\n // will be a failed getSearchResults() at the end because loadPage needs to be (totalPages + 1) to avoid getting more searchResults\n }\n }\n\n getScrollPosition() {\n const scrollPosition = $(document).scrollTop();\n if (scrollPosition < 200 || parseInt(this.resultLength, 10) < 10) {\n $(\"#ReturnToTop\").hide();\n } else {\n this.returnToTopBtn = true;\n $(\"#ReturnToTop\").show();\n }\n }\n\n returnToTop() {\n $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\n }\n\n openDropdown(name: string) {\n if ($(\"#\" + name).hasClass(\"done-with-choice\")) {\n // reopen\n $(\"#\" + name)\n .removeClass(\"done-with-choice\")\n .addClass(\"active\");\n } else if (!$(\"#\" + name).hasClass(\"active\")) {\n // fresh start\n this.filterOutputObj[name] = [];\n $(\"#\" + name).addClass(\"active\");\n }\n }\n\n toggleDropdown($event) {\n const filterObject = {};\n const name = $event.target.offsetParent.id;\n let findOptionValue = 0;\n if (\n $($event.target.offsetParent).hasClass(\"active\") &&\n this.filterOutputObj[name] !== undefined &&\n this.filterOutputObj[name].length !== 0\n ) {\n $($event.target.offsetParent)\n .removeClass(\"active\")\n .addClass(\"done-with-choice\");\n filterObject[\"propertyName\"] = name;\n filterObject[\"filterValues\"] = this.filterOutputObj[name];\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n if (this.filterOptionValues[i][\"propertyName\"] === name) {\n this.filterOptionValues[i][\"filterValues\"] = this.filterOutputObj[\n name\n ];\n findOptionValue++;\n }\n }\n if (findOptionValue === 0) {\n this.filterOptionValues.push(filterObject);\n }\n\n this.loadPage = 1;\n this.getSearchResults();\n } else if (\n $($event.target.offsetParent).hasClass(\"active\") &&\n this.filterOutputObj[name] !== undefined &&\n this.filterOutputObj[name].length === 0\n ) {\n // delete the previous choices of this filter\n $($event.target.offsetParent).removeClass(\"active\");\n if (this.filterOptionValues.length !== 0) {\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n if (this.filterOptionValues[i][\"propertyName\"] === name) {\n this.filterOptionValues.splice(i, 1);\n }\n }\n }\n this.loadPage = 1;\n this.getSearchResults();\n } else {\n // call openDropdown() to open the dropdown by setting the input to focus\n $($event.target.offsetParent)\n .children(\".customized-input\")\n .focus();\n }\n }\n\n pushDropCheck($event, x: number) {\n $event.stopPropagation();\n const val = $event.target.value;\n const id = $event.target.parentNode.parentNode.parentNode.parentNode.id;\n if (this.filterOutputObj[id].indexOf(val) === -1) {\n const index = this.dataFilterArray[x][\"filterValues\"].indexOf(val);\n delete this.dataFilterArray[x][\"filterValues\"][index];\n this.filterOutputObj[id].push(val);\n this.dataFilterArray[x][\"selectedFilterValues\"].push(val);\n const indexValueObj = {\n index: index,\n value: val\n };\n if (this.filterOutputIndexValue[x].indexOf(indexValueObj) === -1) {\n this.filterOutputIndexValue[x].push(indexValueObj);\n }\n }\n this.dataFilterArray[x][\"filterValues\"] = this.dataFilterArray[x][\n \"filterValues\"\n ].slice();\n }\n\n deleteOutput($event, x: number) {\n const val = $event.target.value;\n const id = $event.target.parentNode.parentNode.parentNode.parentNode.id;\n this.filterOutputObj[id].splice(this.filterOutputObj[id].indexOf(val), 1);\n this.dataFilterArray[x][\"selectedFilterValues\"].splice(\n this.dataFilterArray[x][\"selectedFilterValues\"].indexOf(val),\n 1\n );\n if (this.dataFilterArray[x][\"filterValues\"].indexOf(val) === -1) {\n for (let i = 0; i < this.filterOutputIndexValue[x].length; i++) {\n const index = this.filterOutputIndexValue[x][i][\"index\"];\n const value = this.filterOutputIndexValue[x][i][\"value\"];\n if (val === value) {\n this.dataFilterArray[x][\"filterValues\"][index] = value;\n this.filterOutputIndexValue[x].splice(i, 1);\n }\n }\n }\n this.dataFilterArray[x][\"filterValues\"] = this.dataFilterArray[x][\n \"filterValues\"\n ].slice();\n }\n\n changeCheckbox($event, label: string, value: string) {\n this.loadPage = 1;\n let foundLabel = 0;\n if ($event.target.checked) {\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n if (\n this.filterOptionValues[i][\"propertyName\"] === label &&\n this.filterOptionValues[i][\"filterValues\"].indexOf(value) === -1\n ) {\n this.filterOptionValues[i][\"filterValues\"].push(value);\n foundLabel++;\n }\n }\n if (foundLabel === 0) {\n const valueArr = [];\n const filterObj = {};\n valueArr.push(value);\n filterObj[\"propertyName\"] = label;\n filterObj[\"filterValues\"] = valueArr;\n this.filterOptionValues.push(filterObj);\n }\n } else {\n // unchecked the checkbox so delete the value or the whole object\n for (let i = 0; i < this.filterOptionValues.length; i++) {\n if (this.filterOptionValues[i][\"propertyName\"] === label) {\n const valueArr = this.filterOptionValues[i][\"filterValues\"];\n const valueIndex = valueArr.indexOf(value);\n valueArr.splice(valueIndex, 1);\n if (valueArr.length === 0) {\n this.filterOptionValues.splice(i, 1);\n }\n }\n }\n }\n this.getSearchResults();\n }\n\n openHelpModal() {\n this.modalService.open(this.helpTemplate);\n }\n\n toggleHelp($event) {\n $($event.target)\n .children(\"span.chevron-btn\")\n .toggleClass(\"open\");\n $($event.target)\n .siblings(\".hide-part\")\n .toggleClass(\"show\");\n }\n\n mobileShowFilter($event) {\n $($event.target)\n .children()\n .find(\"span.hide.white-icon\")\n .toggleClass(\"vertical\");\n if (this.dataFilterArray !== undefined) {\n $(\"#mobileFilter\").append($(\".mobile-filters\"));\n $(\".mobile-filters\").toggleClass(\"show\");\n $(\".block-background-click\").toggleClass(\"show\");\n }\n }\n\n mobileShowSort($event) {\n $($event.target)\n .children()\n .find(\"span.hide.white-icon\")\n .toggleClass(\"vertical\");\n\n if ($(\".mobile-sort\").hasClass(\"show\")) {\n $(\"#desktopSort\").append($(\".mobile-sort\"));\n } else {\n $(\"#mobileSort\").append($(\".mobile-sort\"));\n }\n\n $(\".mobile-sort\").toggleClass(\"show\");\n $(\".block-background-click\").toggleClass(\"show\");\n }\n\n compareResult($event, i: number) {\n const compareCard = this.searchResults[i];\n if (\n this.compareResultsArr.length < 3 &&\n $event.target.checked &&\n this.compareResultsArr.indexOf(compareCard) === -1\n ) {\n this.compareResultsArr.push(compareCard);\n } else if (\n this.compareResultsArr.length >= 3 &&\n $event.target.checked &&\n this.compareResultsArr.indexOf(compareCard) === -1\n ) {\n $event.target.checked = false;\n this.compareWarning();\n return;\n } else if (\n !$event.target.checked &&\n this.compareResultsArr.indexOf(compareCard) !== -1\n ) {\n this.compareResultsArr.splice(\n this.compareResultsArr.indexOf(compareCard),\n 1\n );\n }\n this.compareResultsNum = this.compareResultsArr.length;\n }\n\n compareWarning() {\n this.modalService.open(this.compareWarningTemplate, { centered: true });\n }\n\n compareClear() {\n this.compareResultsNum = 0;\n this.compareResultsArr = [];\n $(\".compare-input\").prop(\"checked\", false);\n }\n\n openCompare() {\n if (this.compareResultsNum === 1) {\n // don't open compare modal\n } else if (this.compareResultsNum === 2 || this.compareResultsNum === 3) {\n this.buildCompareTable();\n this.modalService.open(this.compareSelectionsTemplate, { size: \"lg\" });\n } else if (this.compareResultsNum === 4) {\n this.compareWarning();\n }\n }\n\n buildCompareTable() {\n this.compareTableArr = [];\n const convertedPropertyNameArr = [];\n this.convertArrToCamelCase(\n this.helpPropertyNameArray,\n convertedPropertyNameArr\n );\n // dont find the value for metric, so i started from 1\n for (let i = 1; i < convertedPropertyNameArr.length; i++) {\n const columnArr = [];\n const value = this.compareResultsArr[0][convertedPropertyNameArr[i]];\n let difference = 0;\n if (value !== -9999) {\n for (let j = 0; j < this.compareResultsArr.length; j++) {\n const val = this.compareResultsArr[j][convertedPropertyNameArr[i]];\n // helpLabelArray.length equals to convertedPropertyNameArr.length\n columnArr.push({\n name: this.helpLabelArray[i],\n value: val\n });\n if (value !== val) {\n difference++;\n }\n }\n this.compareTableArr.push({\n different: difference <= 0,\n columnArr: columnArr\n });\n }\n }\n }\n\n convertArrToCamelCase(x: any = [], y: any = []) {\n for (let i = 0; i < x.length; i++) {\n y[i] = this.removeUnderscoreAndCamelCase(x[i]);\n }\n return y;\n }\n\n removeUnderscoreAndCamelCase(str: string) {\n // remove underscores and camelCase the words\n // 'cutter_diameter' --> 'cutterDiameter'\n const frags = str.split(\"_\");\n for (let i = 1; i < frags.length; i++) {\n frags[i] = frags[i].charAt(0).toUpperCase() + frags[i].slice(1);\n }\n return frags.join(\"\");\n }\n\n replaceUnderscoreAndCapitalize(str: string) {\n // convert propertyName to label\n // exceptions\n if (str === \"shank_dia\") {\n return \"Shank Diameter\";\n } else if (str === \"tip\") {\n return \"Tip Diameter\";\n } else if (str === \"o_ring_x_section\") {\n return \"O-Ring Cross Section\";\n } else {\n // replace underscore with space and capitalize the first char\n // 'cutter_diameter' --> 'Cutter Diameter'\n const frags = str.split(\"_\");\n for (let i = 0; i < frags.length; i++) {\n if (frags[i].length > 2) {\n // don't capitalize if the word has no more than 2 letters, for example , of, in\n frags[i] = frags[i].charAt(0).toUpperCase() + frags[i].slice(1);\n }\n }\n return frags.join(\" \");\n }\n }\n\n ngOnInit() {\n this.checkUrl();\n this.getSearchResults();\n this.getSearchByFilterData();\n // check if uses touchstart or mousedown because on some it uses both and calls the listener twice\n const eventType = \"ontouchstart\" in document ? \"touchstart\" : \"mousedown\";\n $(document).on(eventType, function($event) {\n if (\n $(\"div.input-dropdown\").hasClass(\"active\") &&\n !$($event.target.offsetParent).hasClass(\"active\") &&\n !$($event.target.offsetParent).hasClass(\"customized-dropdown\") &&\n $event.target.className !== \"form-check-input\" &&\n $event.target.className !== \"form-check-label\"\n ) {\n $(\"div.input-dropdown.active\")\n .children(\"button.customized-dropdown-btn\")\n .click();\n }\n\n if (\n $event.target.className !== \"mobile-show\" &&\n !$($event.target).hasClass(\"ng-star-inserted\") &&\n !$($event.target).hasClass(\"mat-select-trigger\") &&\n !$($event.target).hasClass(\"mat-select-placeholder\") &&\n $event.target.offsetParent.id !== \"mobileSort\"\n ) {\n if ($(\"#mobileSort .mobile-sort\").hasClass(\"show\")) {\n $(\".mobile-sort\").toggleClass(\"show\");\n $(\"#mobileSort\")\n .children()\n .find(\"span.hide.white-icon\")\n .toggleClass(\"vertical\");\n setTimeout(() => {\n $(\".block-background-click\").toggleClass(\"show\");\n }, 800);\n }\n }\n if (\n !$($event.target)\n .parents()\n .hasClass(\"mobile-filters\") &&\n !$event.target.offsetParent.id &&\n $(\"#mobileFilter .mobile-filters\").hasClass(\"show\")\n ) {\n $(\".mobile-filters\").toggleClass(\"show\");\n $(\"#mobileFilter\")\n .children()\n .find(\"span.hide.white-icon\")\n .toggleClass(\"vertical\");\n setTimeout(() => {\n $(\".block-background-click\").toggleClass(\"show\");\n }, 800);\n }\n });\n $(window).scroll(this.getScrollPosition);\n }\n}\n","module.exports = \"\\n\\n\\n\\n \\n \\n \\n FIND A TOOL\\n To begin, select an icon below to search by Tool Style, Operation, or Material.\\n \\n \\n\\n\\n \\n \\n \\n Search By Tool Style\\n \\n \\n \\n \\n \\n\\n\\n\\n \\n \\n \\n {{brandToolStyle.sectionName}}\\n \\n \\n \\n \\n {{item.label}}\\n \\n \\n \\n \\n \\n {{item.label}}\\n \\n \\n \\n \\n\\n\\n\\n\\n \\n \\n \\n Search By Operation\\n \\n \\n \\n \\n \\n\\n\\n\\n \\n \\n \\n {{brandOper.sectionName}}\\n \\n \\n \\n \\n {{item.label}}\\n \\n \\n \\n \\n\\n\\n\\n\\n \\n \\n \\n Search By Material\\n \\n \\n \\n \\n \\n\\n\\n\\n \\n \\n \\n {{brandMat.sectionName}}\\n \\n \\n \\n \\n \\n {{item.label}}\\n \\n \\n \\n \\n \\n \\n\\n\\n\\n \\n \\n Please Further Refine Your Search\\n \\n \\n We have many tools that will work for that material. To continue your search, please pair your material with a tool style or operation icon from the selection above.\\n \\n OK\\n \\n\"","module.exports = \"/* colors */\\n/* phase 1 styles starts here */\\n.phase1 .header {\\n font-size: 2rem;\\n font-weight: 700;\\n letter-spacing: .05rem; }\\n.phase1 span.hide {\\n display: none;\\n position: absolute;\\n pointer-events: none;\\n right: 40px;\\n top: 40%;\\n width: 14px;\\n height: 3px;\\n background-color: white;\\n z-index: 5; }\\n.phase1 span.hide.vertical {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n -webkit-transform: all .3s ease;\\n transform: all .3s ease; }\\n.phase1 .p-header {\\n text-align: center;\\n color: white;\\n border: 1px #707070 solid;\\n padding: 10px 0;\\n margin-bottom: 10px; }\\n.phase1 .p-header h2 {\\n pointer-events: none; }\\n.phase1 .p-header.primary {\\n background-color: #1c3e77; }\\n.phase1 .p-header.secondary {\\n background-color: #0B7E55; }\\n.phase1 .subheader {\\n background-color: rgba(112, 112, 112, 0.2);\\n color: #707070;\\n text-align: center;\\n padding: 5px 0;\\n margin-bottom: 10px; }\\n.phase1 .link-column {\\n max-width: 200px;\\n margin: 25px auto 50px auto; }\\n.phase1 .link-column.center {\\n margin: 10px 25px 50px 25px; }\\n.phase1 .link-block {\\n display: block;\\n padding: 5px 0; }\\n.phase1 .link-block a:hover {\\n text-decoration: none; }\\n.phase1 img {\\n width: 100%;\\n height: auto; }\\n.phase1 img:hover {\\n cursor: pointer; }\\n.phase1 .card-name {\\n color: #222;\\n margin-top: 10px;\\n font-weight: 700;\\n pointer-events: none; }\\n.phase1 .link-name {\\n color: #222;\\n border-bottom: 2px solid #222;\\n display: inline; }\\n.phase1 .link-name:hover {\\n cursor: pointer; }\\n.phase1 .row-less-margin {\\n display: flex;\\n flex-wrap: wrap;\\n margin-left: -5px;\\n margin-right: -5px; }\\n.phase1 .row-less-margin.center {\\n justify-content: center; }\\n.phase1 .row-less-margin.margin-top {\\n margin-top: 20px; }\\n.phase1 .row-less-margin.margin-bottom {\\n margin-bottom: 20px; }\\n.phase1 .row-less-margin .col-sm-1, .phase1 .row-less-margin .col-sm-2, .phase1 .row-less-margin .col-sm-3, .phase1 .row-less-margin .col-sm-4, .phase1 .row-less-margin .col-1, .phase1 .row-less-margin .col-2, .phase1 .row-less-margin .col-3, .phase1 .row-less-margin .col-4 {\\n padding-left: 5px;\\n padding-right: 5px;\\n margin-bottom: 10px;\\n margin-top: 10px;\\n text-align: center;\\n min-height: 150px; }\\n.phase1 .remove-side-pading {\\n padding-right: 0;\\n padding-left: 0; }\\n.compare-header {\\n margin: 30px auto 20px auto; }\\n.compare-text {\\n text-align: center;\\n color: #707070;\\n font-size: .8rem; }\\n.modal-body {\\n padding: 1rem 2rem; }\\n@media (max-width: 992px) {\\n .container.full-width {\\n max-width: 100%;\\n padding: 0;\\n position: relative; }\\n h2 {\\n font-size: 1rem; }\\n .phase1 .header {\\n text-align: center;\\n font-size: 2rem; }\\n .phase1 .header.primary {\\n color: #1c3e77; }\\n .phase1 .header.secondary {\\n color: #0B7E55; }\\n .phase1 p.extra-margin {\\n text-align: center; }\\n .phase1 .offset-0 {\\n margin-left: 35%; } }\\n@media (max-width: 851px) {\\n .mobile-search-select {\\n list-style: none; } }\\n@media (max-width: 540px) {\\n .container.phase1.hide-content {\\n display: none; }\\n .phase1 .header {\\n font-size: 1.5rem; }\\n .phase1 span.hide {\\n display: block; }\\n .phase1 .col-2 {\\n min-width: 33%; } }\\n\"","import { Component, OnInit, ViewChild, TemplateRef, HostListener } from '@angular/core';\nimport { DataService } from '../data.service';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport * as $ from 'jquery';\n\n@Component({\n selector: 'app-search-screen',\n templateUrl: './search-screen.component.html',\n styleUrls: ['./search-screen.component.scss']\n})\nexport class SearchScreenComponent implements OnInit {\n\n public ifHarvey: boolean;\n public companyBrand: string;\n public isMobile: boolean;\n // TODO : mobile\n\n public brandData: any = {};\n public brandSection: any = [];\n public section: string;\n public brandSectionHideHeader: boolean;\n public brandSectionCenter: boolean;\n\n public brandToolStyles: any = [];\n public brandToolHideHeader: boolean;\n public brandToolCenter: boolean;\n\n public brandOperations: any = [];\n public brandOperHideHeader: boolean;\n public brandOperCenter: boolean;\n\n public brandMaterials: any = [];\n public brandMatHideHeader: boolean;\n public brandMatCenter: boolean;\n\n public searchBy: any = [];\n\n public path: string;\n public materialSeleced: string;\n\n @ViewChild('materialSearchModal')\n private materialSearchModal: TemplateRef;\n @HostListener('window:resize', ['$event'])\n onWindowResize() {\n this.isMobile = (window.innerWidth < 851);\n }\n\n\n constructor(\n private _data: DataService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private modalService: NgbModal\n ) {\n this.isMobile = (window.innerWidth < 851);\n }\n\n checkBrand() {\n this.activatedRoute.queryParams.subscribe(params => {\n if (!params.brand || (params.brand !== 'harvey' && params.brand !== 'helical' && params.brand !== 'hpc')) {\n // if query params not exists, set the default to harvey\n this.router.navigate([''], { queryParams: { brand: 'harvey' } });\n this.companyBrand = 'harvey';\n } else {\n this.companyBrand = params.brand;\n }\n this.ifHarvey = this.companyBrand !== 'helical';\n this.getSectionData(this.companyBrand);\n });\n }\n\n\n getSectionData(brand) {\n this._data.getSectionGroups(brand, '', '').subscribe(\n data => {\n this.brandData = data;\n this.brandToolStyles = this.getBrandData('toolStyles', this.brandData).brandSection;\n this.brandToolHideHeader = this.getBrandData('toolStyles', this.brandData).brandSectionHideHeader;\n this.brandToolCenter = this.getBrandData('toolStyles', this.brandData).brandSectionCenter;\n this.brandOperations = this.getBrandData('operations', this.brandData).brandSection;\n this.brandOperHideHeader = this.getBrandData('operations', this.brandData).brandSectionHideHeader;\n this.brandOperCenter = this.getBrandData('operations', this.brandData).brandSectionCenter;\n this.brandMaterials = this.getBrandData('materials', this.brandData).brandSection;\n this.brandMatHideHeader = this.getBrandData('materials', this.brandData).brandSectionHideHeader;\n this.brandMatCenter = this.getBrandData('materials', this.brandData).brandSectionCenter;\n },\n err => console.error(err),\n () => console.log('done loading data')\n );\n }\n\n getBrandData(section: string, brandData: any = {}) {\n this.brandSection = brandData[section];\n this.brandSectionCenter = ((this.brandSection[0].alignment === 'Center') ? true : false);\n this.brandSectionHideHeader = this.brandSection[0].hideHeader;\n // check the first element in the array to decide if display subheader for the whole section\n for (let i = 0; i < this.brandSection.length; i++) {\n if (this.brandSection[i].groupSize !== 0) {\n this.brandSection[i].column = 12 / this.brandSection[i].groupSize;\n this.brandSection[i].subOffset = this.brandSection[i].column * this.brandSection[i].offset;\n // now only for material section\n }\n }\n return {\n brandSection: this.brandSection,\n brandSectionHideHeader: this.brandSectionHideHeader,\n brandSectionCenter: this.brandSectionCenter\n };\n\n }\n\n newSearchBy(search: string, i: number, j: number) {\n let queryParams = {};\n if (search === 'toolStyle') {\n queryParams = {\n brand: this.companyBrand,\n ps: search,\n toolStyle: this.brandToolStyles[i]['sectionGroupItems'][j]['label']\n };\n if (this.materialSeleced) {\n queryParams['material'] = this.materialSeleced;\n }\n this.router.navigate(['/result'], { queryParams });\n } else if (search === 'operation') {\n queryParams = {\n brand: this.companyBrand,\n ps: search,\n operation: this.brandOperations[i]['sectionGroupItems'][j]['label']\n };\n if (this.materialSeleced) {\n queryParams['material'] = this.materialSeleced;\n }\n this.router.navigate(['/result'], { queryParams });\n } else if (search === 'material') {\n if (this.isMobile) {\n this.materialSeleced = this.brandMaterials[i]['sectionGroupItems'][j]['label'];\n this.modalService.open(this.materialSearchModal);\n } else {\n this.router.navigate(\n ['/result'], {\n queryParams: {\n brand: this.companyBrand,\n material: this.brandMaterials[i]['sectionGroupItems'][j]['label']\n }\n });\n }\n }\n }\n\n mobileShowContent($event) {\n // all click events target are set to the div.p-header\n $($event.target).children('span.hide.white-icon').toggleClass('vertical');\n $($event.target.offsetParent).closest('div.container.phase1.full-width').next('div.container.phase1').toggleClass('hide-content');\n }\n\n ngOnInit() {\n this.checkBrand();\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n\n // URL of development API\n apiUrl: \"http://localhost:50034\",\n apiEndpoint: \"/api\"\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n"],"sourceRoot":""}
contact
products
check stock
catalogs
custom tools
find a distributor
tech info
about
About Us
Our Brands
In the Loupe
Machining Advisor Pro
Careers
Contact Us
Further refine your search by selecting specific tool features and dimensions below. As your preferred tool becomes specified, irrelevant search terms will fade.
Please deselect one of the tools you've already chosen to compare.
Search by a specific dimension(s). Results will automatically refresh based on input below.
{{helpData.text}}
Available :\\n {{result.quantity}}\\n {{result.listPrice | currency}}\\n
To begin, select an icon below to search by Tool Style, Operation, or Material.
\\n We have many tools that will work for that material. To continue your search, please pair your material with a tool style or operation icon from the selection above.\\n