{"version":3,"sources":["../../src/_attributes/on-enter.ts","../../src/_controls/confirm-dialog.ts","../../src/_controls/confirm-dialog.css","../../src/_controls/confirm-dialog.html","../../src/_controls/regions-ddl.ts","../../src/_controls/regions-ddl.css","../../src/_controls/regions-ddl.html","../../src/_controls/regions-dialog.ts","../../src/_controls/regions-dialog.html","../../src/_controls/search-ddl.ts","../../src/_controls/search-ddl.css","../../src/_controls/search-ddl.html","../../src/_controls/size-utility.ts","../../src/_models/dtos.ts","../../src/_models/events.js","../../src/_models/session-data.ts","../../src/_services/dictionary.ts","../../src/_services/sort-service.ts","../../src/_services/url-service.ts","../../src/app.ts","../../src/app.css","../../src/app.html","../../src/environment.ts","../../src/main.ts","../../src/product-selector/color-picker.ts","../../src/product-selector/color-picker.css","../../src/product-selector/color-picker.html","../../src/product-selector/color-search.ts","../../src/product-selector/color-search.css","../../src/product-selector/color-search.html","../../src/product-selector/product-selector.ts","../../src/product-selector/product-selector.css","../../src/product-selector/product-selector.html","../../src/product-selector/product-type.ts","../../src/product-selector/product-type.css","../../src/product-selector/product-type.html","../../src/product-selector/progress-wizard.ts","../../src/product-selector/progress-wizard.css","../../src/product-selector/progress-wizard.html","../../src/product-selector/review-selections.ts","../../src/product-selector/review-selections.css","../../src/product-selector/review-selections.html","../../src/product-selector/slider.ts","../../src/product-selector/slider.css","../../src/product-selector/slider.html","../../src/project-schedule/location-dialog.ts","../../src/project-schedule/location-dialog.css","../../src/project-schedule/location-dialog.html","../../src/project-schedule/location-products-dialog.ts","../../src/project-schedule/location-products-dialog.css","../../src/project-schedule/location-products-dialog.html","../../src/project-schedule/project-schedule.ts","../../src/project-schedule/project-schedule.css","../../src/project-schedule/project-schedule.html","../../src/resources/index.ts","../../src/shell/feedback-dialog.ts","../../src/shell/feedback-dialog.css","../../src/shell/feedback-dialog.html","../../src/shell/footer-logos.ts","../../src/shell/footer-logos.css","../../src/shell/footer-logos.html","../../src/shell/terms-and-conditions.ts","../../src/shell/terms-and-conditions.css","../../src/shell/terms-and-conditions.html","../../src/shell/top-nav.ts","../../src/shell/top-nav.css","../../src/shell/top-nav.html"],"names":[],"mappings":"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","file":"app-bundle.js","sourcesContent":["import { customAttribute, autoinject } from \"aurelia-framework\";\r\n\r\n// TEMPLATE EXAMPLE:\r\n// \r\n\r\n@autoinject\r\n@customAttribute('on-enter')\r\nexport class OnEnter {\r\n constructor(element: Element) {\r\n\r\n this.element = element;\r\n this.onEnter = (ev: KeyboardEvent) => {\r\n //Enter keyCode is 13\r\n if (ev.keyCode !== 13) return;\r\n this.action();\r\n };\r\n }\r\n element: Element;\r\n attached() {\r\n //this.element.addEventListener(\"keyup\", this.onEnter);\r\n document.addEventListener(\"keyup\", this.onEnter);\r\n }\r\n onEnter;\r\n\r\n action;\r\n valueChanged(func) {\r\n this.action = func;\r\n }\r\n\r\n detached() {\r\n //this.element.removeEventListener(\"keyup\", this.onEnter);\r\n document.removeEventListener(\"keyup\", this.onEnter);\r\n }\r\n}\r\n","import { autoinject } from \"aurelia-framework\";\r\nimport { DialogController } from 'aurelia-dialog';\r\n\r\n@autoinject\r\nexport class ConfirmDialog {\r\n\r\n constructor(public controller: DialogController) {\r\n\r\n }\r\n message = \"\";\r\n activate(data) {\r\n this.message = data;\r\n }\r\n}\r\n",null,null,"import { RouterConfiguration, Router } from 'aurelia-router';\r\nimport { bindable, autoinject, observable, computedFrom, singleton } from 'aurelia-framework';\r\nimport { SessionData } from '_models/session-data';\r\nimport * as Dto from '_models/dtos';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ConfirmDialog } from '_controls/confirm-dialog';\r\n\r\n@singleton()\r\n@autoinject\r\nexport class RegionsDdl {\r\n\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public sd: SessionData,\r\n public dialogSvc: DialogService\r\n ) {\r\n }\r\n\r\n attached() {\r\n this.loadRegions();\r\n }\r\n\r\n @bindable isDialog = false;\r\n\r\n regions: Dto.Region[] = [];\r\n \r\n loadRegions() {\r\n var usa = new Dto.Region();\r\n var canada = new Dto.Region();\r\n var cali = new Dto.Region();\r\n\r\n usa.name = 'UNITED STATES';\r\n usa.type = 'USAIntl';\r\n canada.name = 'CANADA';\r\n canada.type = 'Canada';\r\n cali.name = 'CALIFORNIA';\r\n cali.type = 'California';\r\n\r\n this.regions = [usa, canada, cali];\r\n }\r\n\r\n regionSelected(region: Dto.Region) {\r\n\r\n this.confirmContinue().then(confirmed => {\r\n if (confirmed) {\r\n this.sd.resetWizard();\r\n this.sd.region = region;\r\n this.sd.save();\r\n this._eventBus.publish('region-changed', region.type);\r\n } \r\n }); \r\n }\r\n\r\n confirmContinue() {\r\n\r\n var isProductSelected = this.sd.wizard.selectedProduct != null;\r\n\r\n if (isProductSelected) {\r\n // Confirm if the user really wants to change products... warn of wizard reset\r\n return this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: 'Changing the region will remove your existing product and color selections. Are you sure you want to continue?'\r\n }).whenClosed(e => !e.wasCancelled);\r\n } else {\r\n // Signal that it is ok to continue\r\n return Promise.resolve(true);\r\n }\r\n }\r\n}",null,null,"import { autoinject } from 'aurelia-framework';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { DialogController } from 'aurelia-dialog';\r\n\r\n@autoinject\r\nexport class RegionsDialog {\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public controller: DialogController\r\n ) { }\r\n\r\n attached() {\r\n this._eventBus.subscribe('region-changed', e => {\r\n this.controller.ok();\r\n });\r\n }\r\n}",null,"import { observable, bindable } from 'aurelia-framework';\r\nimport { SizeUtility } from '_controls/size-utility';\r\n\r\nexport class SearchDdl {\r\n\r\n private _sizeUtil: SizeUtility;\r\n\r\n constructor() {\r\n this._sizeUtil = new SizeUtility();\r\n }\r\n \r\n @bindable @observable searchText: string;\r\n @bindable isOpen = false;\r\n @bindable isFocused = false;\r\n\r\n dialogWidth = '500px';\r\n\r\n attached() {\r\n this.dialogWidth = this.calculateDialogWidth();\r\n window.onresize = () => {\r\n this.dialogWidth = this.calculateDialogWidth();\r\n };\r\n }\r\n\r\n calculateDialogWidth() {\r\n return (this._sizeUtil.calculateWindowWidth() - 25).toString() + 'px';\r\n }\r\n\r\n searchToggled() {\r\n var isOpening = !this.isOpen;\r\n this.isFocused = isOpening;\r\n\r\n if (isOpening) {\r\n this.subscribeToKeyEvents();\r\n } else {\r\n this.unsubscribeToKeyEvents();\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.searchText = '';\r\n }\r\n\r\n subscribeToKeyEvents() {\r\n window.addEventListener('keypress', this.onKeyPress, false);\r\n }\r\n\r\n unsubscribeToKeyEvents() {\r\n window.removeEventListener('keypress', this.onKeyPress);\r\n }\r\n\r\n // NOTE: Using lambda syntax captures \"this\" in a closure\r\n onKeyPress = (e: KeyboardEvent) => {\r\n if (e.keyCode == 13) {\r\n // enter\r\n this.isOpen = false;\r\n }\r\n };\r\n}",null,null,"export class SizeUtility {\r\n calculateWindowWidth() {\r\n var w = window,\r\n d = document,\r\n e = d.documentElement,\r\n g = d.getElementsByTagName('body')[0],\r\n x = w.innerWidth || e.clientWidth || g.clientWidth,\r\n y = w.innerHeight || e.clientHeight || g.clientHeight;\r\n\r\n return x;\r\n }\r\n}","import { SortService } from '_services/sort-service';\r\n\r\nexport class ProductTypeFilter {\r\n searchText: string;\r\n productUseId: number;\r\n Region: string;\r\n chps: boolean;\r\n leedv4: boolean;\r\n mpi: boolean;\r\n asthmaAllergy: boolean;\r\n cradleToCradle: boolean;\r\n voc: boolean;\r\n substrateId: number;\r\n sheenIds: number[];\r\n}\r\n\r\nexport class ProductType {\r\n productNumber: string;\r\n productFamily: string;\r\n description: string;\r\n canCutImage: string;\r\n sheenName: string;\r\n chps: boolean;\r\n leedV4: boolean;\r\n mpi: boolean;\r\n cradleToCradle: boolean;\r\n asthmaAllergy: boolean;\r\n voc: boolean;\r\n}\r\n\r\nexport class ProductUse {\r\n id: number;\r\n application: string;\r\n}\r\n\r\nexport class Substrate {\r\n id: number\r\n abbrev: string\r\n longName: string\r\n interior: boolean\r\n exterior: boolean\r\n}\r\n\r\nexport class ColorCollection {\r\n id: number;\r\n colorCollectionName: string;\r\n colorStripSize: number;\r\n rowSize: number;\r\n}\r\n\r\nexport class ColorType {\r\n colorUID: string;\r\n colorNumber: string;\r\n colorName: string;\r\n colorCollectionId: number;\r\n isIncludedInProduct: boolean;\r\n colorFamilyId: number;\r\n lrv: number;\r\n color: RgbColor;\r\n hasRecommendedPrimer: boolean;\r\n\r\n static noColor() {\r\n var c = new ColorType();\r\n var d = new Date();\r\n var uniqueInt = Math.round(d.getTime() / 100);\r\n c.colorUID = 'nocolorselected_' + uniqueInt.toString(); // Must be unique\r\n c.colorNumber = '';\r\n c.colorName = 'NO COLOR SELECTED';\r\n c.color = new RgbColor();\r\n c.color.red = 255;\r\n c.color.green = 255;\r\n c.color.blue = 255;\r\n c.color.hexValue = '#FFFFFF';\r\n return c;\r\n }\r\n\r\n static isNoColor(c: ColorType) {\r\n return c.colorName == \"NO COLOR SELECTED\";\r\n }\r\n\r\n // UI\r\n isHidden: boolean = false;\r\n isSelected: boolean = false;\r\n}\r\n\r\nexport class RgbColor {\r\n red: number;\r\n green: number;\r\n blue: number;\r\n hexValue: string;\r\n}\r\n\r\nexport class ColorStrip {\r\n items: ColorType[];\r\n\r\n // UI\r\n isHidden: boolean = false;\r\n}\r\n\r\nexport class ColorFamily {\r\n id: number;\r\n name: string;\r\n\r\n // UI\r\n isChecked: boolean = false;\r\n isEnabled: boolean = true;\r\n}\r\n\r\nexport class Region {\r\n name: string;\r\n type: string;\r\n abbrev: string;\r\n}\r\n\r\n/**\r\n * A combination of a selected product and color.\r\n * A pass through the product-selector wizard will result in an array of these.\r\n */\r\nexport class WizardProductColorSelection {\r\n constructor(\r\n public productUse: ProductUse,\r\n public substrate: Substrate,\r\n public product: ProductType,\r\n public color: ColorType \r\n ) { }\r\n\r\n // Sort properties\r\n get productFamily(): string {\r\n return (this.product && this.product.productFamily || null);\r\n }\r\n\r\n get sheenName(): string {\r\n return (this.product && this.product.sheenName || null);\r\n }\r\n\r\n get colorNumber(): string {\r\n return (this.color && this.color.colorNumber || null);\r\n }\r\n\r\n get colorName(): string {\r\n return (this.color && this.color.colorName || null);\r\n }\r\n}\r\n\r\n/**\r\n * A combination of a selected product, color and room. \r\n * The project-schedule will result in an array of these.\r\n */\r\nexport class ScheduleItem extends WizardProductColorSelection {\r\n constructor(\r\n productUse: ProductUse,\r\n substrate: Substrate,\r\n product: ProductType,\r\n color: ColorType, \r\n public location: string,\r\n // User defined notes (ex: Trim, walls, etc)\r\n public notes?: string\r\n ) {\r\n super(productUse, substrate, product, color);\r\n }\r\n}\r\n\r\n/**\r\n * A projection of selected products with assigned locations for use with the project-schedule 'products' tab.\r\n */\r\nexport class ScheduledProductProjection extends WizardProductColorSelection {\r\n constructor(\r\n productUse: ProductUse,\r\n substrate: Substrate,\r\n product: ProductType,\r\n color: ColorType, \r\n private _locations: string[] = []\r\n ) {\r\n super(productUse, substrate, product, color);\r\n }\r\n\r\n /**\r\n * A comma separated list of locations that this room is assigned to.\r\n */\r\n get locations() {\r\n return this._locations.join(', ');\r\n }\r\n}\r\n\r\n/**\r\n * A projection of locations with their scheduled products for use with the project-schedule 'locations' tab.\r\n */\r\nexport class ScheduledLocationProjection {\r\n constructor(\r\n public name: string,\r\n public selections: ScheduleItem[] = []\r\n ) {\r\n this.sorter = new SortService('productFamily', 'asc');\r\n }\r\n\r\n sorter: SortService;\r\n\r\n isOpen: boolean;\r\n\r\n sortTable(propertyName: string) {\r\n this.sorter.sort(this.selections, propertyName);\r\n }\r\n}\r\n\r\nexport class Feedback {\r\n firstName: string;\r\n lastName: string;\r\n company: string;\r\n phone: string;\r\n email: string;\r\n feedback: string;\r\n}\r\n\r\n/**\r\n * DTO to the server side domain class\r\n */\r\nexport class ProjectScheduleItem {\r\n LocationName: string;\r\n LocationTag: string;\r\n ColorUID: string;\r\n ColorName: string;\r\n ColorNumber: string;\r\n Color: RgbColor;\r\n SheenId: number;\r\n SheenName: string;\r\n SheenDisplayOrder: number;\r\n ProductNumber: string;\r\n ProductFamily: string;\r\n ProductName: string;\r\n}\r\n",null,"import * as Dto from '_models/dtos';\r\n\r\nexport class SessionData {\r\n constructor() {\r\n this.region = null;\r\n this.wizard = new WizardSessionData();\r\n this.locations = [];\r\n this.allSelectedProducts = [];\r\n this.schedule = [];\r\n }\r\n\r\n region: Dto.Region;\r\n\r\n wizard: WizardSessionData;\r\n\r\n locations: string[];\r\n\r\n /**\r\n * An array of all product-color selections.\r\n * Selections will be added to this at the end of each wizard pass.\r\n */\r\n allSelectedProducts: Dto.WizardProductColorSelection[];\r\n\r\n /**\r\n * An array of product-color-room selections.\r\n * Selections will be add here when product-color selections are added to a room.\r\n */\r\n schedule: Dto.ScheduleItem[];\r\n\r\n addWizardSelections() {\r\n this.wizard.selectedColors.map(wizardSelectedColor => {\r\n // Combine wizard selected colors with wizard selected product\r\n return new Dto.WizardProductColorSelection(this.wizard.selectedProductUse, this.wizard.selectedSubstrate, this.wizard.selectedProduct, wizardSelectedColor);\r\n }).filter(item => {\r\n // Filter out selections that already exist\r\n var exists = this.allSelectedProducts.some(s =>\r\n s.color.colorUID == item.color.colorUID &&\r\n s.product.productFamily == item.product.productFamily && \r\n s.sheenName == item.sheenName);\r\n return !exists;\r\n }).forEach(item => {\r\n // Add to global selections\r\n this.allSelectedProducts.push(item);\r\n });\r\n }\r\n\r\n resetWizard() {\r\n this.wizard = new WizardSessionData();\r\n }\r\n \r\n save() {\r\n try {\r\n console.info('saving session data...');\r\n var sdJson = JSON.stringify(this);\r\n window.sessionStorage.setItem('sd', sdJson);\r\n } catch (ex) {\r\n console.warn('unable to save session data');\r\n }\r\n }\r\n\r\n load() {\r\n try {\r\n console.info('loading session data...');\r\n var sdJson = window.sessionStorage.getItem('sd');\r\n if (sdJson) {\r\n var sd = JSON.parse(sdJson);\r\n\r\n // Strongly type json objects\r\n Object.assign(this, sd);\r\n this.allSelectedProducts = this.allSelectedProducts.map(p => new Dto.WizardProductColorSelection(p.productUse, p.substrate, p.product, p.color));\r\n this.schedule = this.schedule.map(s => new Dto.ScheduleItem(s.productUse, s.substrate, s.product, s.color, s.location, s.notes));\r\n\r\n this.wizard = new WizardSessionData(sd.wizard);\r\n }\r\n } catch (ex) {\r\n console.warn('unable to load session data');\r\n }\r\n }\r\n}\r\n\r\nexport class WizardSessionData {\r\n constructor(savedWizard?: any) {\r\n if (savedWizard) {\r\n Object.assign(this, savedWizard);\r\n } else {\r\n this.selectedColors = [];\r\n this.index = 0;\r\n }\r\n }\r\n\r\n index: number;\r\n\r\n next() {\r\n if (this.index < 2)\r\n this.index++;\r\n }\r\n\r\n prev() {\r\n if (this.index > 0)\r\n this.index--;\r\n }\r\n\r\n // From the product-type page\r\n selectedProductUse: Dto.ProductUse = null;\r\n\r\n // From the product-type page\r\n selectedSubstrate: Dto.Substrate = null;\r\n\r\n // Result of product-selector/product-type\r\n selectedProduct: Dto.ProductType;\r\n\r\n // Result of product-selector/color-picker\r\n selectedColors: Dto.ColorType[];\r\n\r\n addSelectedColor(color: Dto.ColorType) {\r\n // If a product line was added with \"no color\", then remove this option since colors are being added.\r\n if (this.selectedColors.some(c => Dto.ColorType.isNoColor(c))) {\r\n this.resetSelectedColors();\r\n }\r\n\r\n if (this.selectedColors.find(c => c.colorUID == color.colorUID) == null)\r\n this.selectedColors.push(color);\r\n }\r\n \r\n resetSelectedColors() {\r\n this.selectedColors.forEach(c => c.isSelected = false);\r\n this.selectedColors = [];\r\n }\r\n}\r\n","export class Dictionary {\r\n private _hash: any = {};\r\n \r\n get keys(): any[] {\r\n return Object.keys(this._hash);\r\n }\r\n\r\n add(key: any, value: TValue) {\r\n if (!key) return;\r\n this._hash[key] = value;\r\n }\r\n\r\n get(id: any): TValue {\r\n return this._hash[id];\r\n }\r\n\r\n contains(id: any): boolean {\r\n return this.get(id) ? true : false;\r\n }\r\n\r\n remove(id: any) {\r\n delete this._hash[id];\r\n }\r\n\r\n clear() {\r\n this._hash = {};\r\n }\r\n\r\n values() :TValue[] {\r\n var values: TValue[] = [];\r\n for (let key of this.keys) {\r\n values.push(this.get(key));\r\n }\r\n return values;\r\n }\r\n\r\n static fromArray(items: TValue[], keySelector: DictionaryKeySelector) {\r\n var dict = new Dictionary();\r\n items.forEach(item => dict.add(keySelector(item), item));\r\n return dict;\r\n }\r\n}\r\n\r\nexport interface DictionaryKeySelector {\r\n (item: T) : any\r\n}\r\n","export class SortService {\r\n constructor(defaultSortProperty: string, defaultSortDirection: string) {\r\n this.sortProperty = defaultSortProperty;\r\n this.sortDirection = defaultSortDirection;\r\n }\r\n\r\n sortProperty: string;\r\n sortDirection: string;\r\n\r\n sort(items: T[], propertyName: string, direction?: string): T[] {\r\n // Update lastSort\r\n if (this.sortProperty != propertyName) {\r\n this.sortProperty = propertyName;\r\n this.sortDirection = 'asc';\r\n } else {\r\n this.sortDirection = this.sortDirection == 'asc' ? 'desc' : 'asc';\r\n }\r\n\r\n if (direction) {\r\n // Override with provided direction\r\n this.sortDirection = direction;\r\n }\r\n\r\n var dirMultiplier = this.sortDirection == 'asc' ? 1 : -1;\r\n\r\n var compareStrings = function (a, b) {\r\n let aStr = a[propertyName];\r\n let bStr = b[propertyName];\r\n if (aStr > bStr)\r\n return 1 * dirMultiplier;\r\n if (aStr < bStr)\r\n return -1 * dirMultiplier;\r\n\r\n return 0;\r\n };\r\n\r\n var compareBooleans = function (a, b) {\r\n let aBool = a[propertyName];\r\n let bBool = b[propertyName];\r\n if (aBool && !bBool)\r\n return -1 * dirMultiplier;\r\n if (!aBool && bBool)\r\n return 1 * dirMultiplier;\r\n\r\n return 0;\r\n };\r\n\r\n var compareNumber = function (a, b) {\r\n let aNum = a[propertyName];\r\n let bNum = a[propertyName];\r\n return aNum - bNum;\r\n }\r\n\r\n var compareAny = function (a, b) {\r\n let aAny = a[propertyName];\r\n if (typeof aAny == 'string')\r\n return compareStrings(a, b);\r\n else if (typeof aAny == 'boolean')\r\n return compareBooleans(a, b);\r\n else if (typeof aAny == 'number')\r\n return compareNumber(a, b);\r\n else\r\n return 0;\r\n }\r\n\r\n return items.sort(compareAny);\r\n }\r\n}","export class UrlService {\r\n\r\n /**\r\n * Builds a url using the 'href' attribute of the 'base' element (if the base tag exists on the index page).\r\n * @param relativePath - The relative path that must start with the root as: '~/' \r\n * @param resolvePath - Determines whether the path should be fully resolved to an absolute url. The default is 'false'.\r\n */\r\n build(relativePath: string, resolvePath?: boolean): string {\r\n if (relativePath.substr(0, 2) != \"~/\") {\r\n console.error(\"Relative URL '\" + url + \"' must start with '~/'.\");\r\n return;\r\n }\r\n\r\n var relativePath = relativePath.replace('~/', '');\r\n var urlRoot = resolvePath ? this.getResolvedRoot() : this.getBaseHref();\r\n var url = urlRoot + relativePath;\r\n return url;\r\n }\r\n\r\n /**\r\n * Returns the actual href value string of the base element. ex: \"/\"\r\n */\r\n getBaseHref() {\r\n // Assumes that this attribute has been added to the index page\r\n var base = document.querySelector('base');\r\n if (base) {\r\n return base.attributes['href'].value;\r\n } else {\r\n console.warn('No base href tag was found on the index page. Defaulting to \"/\".');\r\n return '/';\r\n }\r\n }\r\n\r\n /**\r\n * Returns the fully resolved root url of the base element. ex: \"http://localhost/root/\"\r\n */\r\n getResolvedRoot() {\r\n // Assumes that this attribute has been added to the index page\r\n var base = document.querySelector('base');\r\n if (base) {\r\n return base.href;\r\n } else {\r\n console.warn('No base href tag was found on the index page. Defaulting to \"/\".');\r\n return '/';\r\n }\r\n }\r\n}","import { autoinject, computedFrom } from 'aurelia-framework';\r\nimport { RouterConfiguration, Router } from 'aurelia-router';\r\nimport { UrlService } from '_services/url-service';\r\nimport * as Dto from '_models/dtos';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { SessionData } from '_models/session-data';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { FeedbackDialog } from 'shell/feedback-dialog';\r\n\r\n@autoinject\r\nexport class App {\r\n private _url: UrlService;\r\n\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public sd: SessionData,\r\n public dialogSvc: DialogService\r\n ) {\r\n this._url = new UrlService();\r\n this.version = (window as any).version;\r\n }\r\n\r\n version: string;\r\n\r\n attached() {\r\n this.sd.load();\r\n }\r\n\r\n detached() {\r\n this.sd.save();\r\n }\r\n \r\n router: Router = null;\r\n \r\n configureRouter(config: RouterConfiguration, router: Router): any {\r\n \r\n config.title = 'Benjamin Moore - Spec Writer';\r\n\r\n //var handleUnknownRoutes = (instruction) => {\r\n // return { route: 'not-found', moduleId: 'app' };\r\n //}\r\n\r\n //config.mapUnknownRoutes(handleUnknownRoutes);\r\n\r\n\r\n config.options.pushState = true;\r\n config.options.root = this._url.getBaseHref();\r\n config.map([\r\n { route: [ '', '/', 'product-selector'], name: 'product-selector', moduleId: 'product-selector/product-selector', nav: true, title: 'Product Selector' },\r\n { route: 'project-schedule', name: 'project-schedule', moduleId: 'project-schedule/project-schedule', nav: true, title: 'Project Schedule' },\r\n { route: 'terms-and-conditions', name: 'terms-and-conditions', moduleId: 'shell/terms-and-conditions', nav: false, title: 'Terms and Conditions' }\r\n ]);\r\n\r\n this.router = router;\r\n }\r\n\r\n sendFeedback() {\r\n this.dialogSvc.open({\r\n viewModel: FeedbackDialog\r\n });\r\n }\r\n}\r\n",null,null,"export default {\r\n debug: true,\r\n testing: true\r\n};\r\n","import { Aurelia } from 'aurelia-framework'\r\nimport environment from './environment';\r\n\r\nexport function configure(aurelia: Aurelia) {\r\n aurelia.use\r\n .standardConfiguration()\r\n .plugin('aurelia-bootstrap')\r\n .plugin('aurelia-dialog')\r\n .plugin('aurelia-validation')\r\n .feature('resources');\r\n\r\n if (environment.debug) {\r\n aurelia.use.developmentLogging();\r\n }\r\n\r\n if (environment.testing) {\r\n aurelia.use.plugin('aurelia-testing');\r\n }\r\n\r\n aurelia.start().then(() => aurelia.setRoot());\r\n}\r\n","import { autoinject, observable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport { Dictionary } from '_services/dictionary';\r\nimport * as Rx from 'rxjs/Rx';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\n\r\n@autoinject\r\nexport class ColorPicker {\r\n private _http: HttpClient;\r\n private _url: UrlService;\r\n private _subscriptions: Subscription[] = [];\r\n private _filterChangedEvent = new Rx.Subject();\r\n private _lastSelectedProductNumber: string = null;\r\n\r\n // Filter Changed States\r\n private _isColorCollectionFilterChanged = false;\r\n private _isColorFamiliesFilterChanged = false;\r\n private _isLrvFilterChanged = false;\r\n\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public router: Router,\r\n public sd: SessionData\r\n ) {\r\n this._http = new HttpClient();\r\n this._url = new UrlService();\r\n\r\n // Throttle the calls to applyFilters\r\n this._filterChangedEvent.debounceTime(300).subscribe(e => this.applyFilters());\r\n }\r\n\r\n readonly COLOR_COLLECTIONS_LABEL = 'COLOR COLLECTIONS';\r\n readonly COLOR_FAMILIES_LABEL = 'COLOR FAMILIES';\r\n readonly LRV_LABEL = 'LRV';\r\n readonly SELECTED_COLORS_LABEL = 'SELECTED COLORS';\r\n\r\n readonly DEFAULT_MAX_SELECTION_COLUMNS = 8;\r\n\r\n /**\r\n * The max number of color strips columns to show in the selection box.\r\n */\r\n maxSelectionColumns = this.DEFAULT_MAX_SELECTION_COLUMNS;\r\n\r\n attached() {\r\n this.message = \"LOADING...\";\r\n \r\n this._subscriptions = [\r\n this._eventBus.subscribe('region-changed', regionType => this.resetFiltersAndSelections()),\r\n this._eventBus.subscribe('color-search-selected', color => this.toggleSearchedColorSelection(color)),\r\n this._eventBus.subscribe('loading-done', e => this.onLoadingDone())\r\n ];\r\n \r\n this.loadColorCollectionsForSelectedProduct();\r\n }\r\n\r\n detached() {\r\n this.clearColorStrips();\r\n this._subscriptions.forEach(s => s.dispose());\r\n }\r\n\r\n onLoadingDone() {\r\n if (this.colorCollections.length == 0) {\r\n // If no color collections were found for this product, then clear any colors\r\n this.resetFiltersAndSelections();\r\n this.clearColorStrips();\r\n this.message = \"No color options for product. Click 'SKIP COLOR SELECTION' to proceed.\";\r\n } else {\r\n this.message = \"\";\r\n }\r\n }\r\n\r\n message: string;\r\n\r\n colorCollections: Dto.ColorCollection[] = [];\r\n @observable selectedColorCollection: Dto.ColorCollection;\r\n\r\n getAllColors() {\r\n var colors: Dto.ColorType[] = [].concat.apply([], this.colorStrips.map(cs => cs.items));\r\n return colors;\r\n }\r\n\r\n toggleSearchedColorSelection(color: Dto.ColorType) {\r\n // Toggle the color-search color-chip instance\r\n this.toggleColorSelection(color);\r\n\r\n // Try to toggle the color-picker color-chip instance\r\n var colors = this.getAllColors();\r\n var match = colors.find(c => c.colorUID == color.colorUID);\r\n if (match) {\r\n this.toggleColorSelection(match);\r\n }\r\n }\r\n\r\n toggleColorSelection(color: Dto.ColorType) {\r\n\r\n if (!color.isSelected) {\r\n\r\n color.isSelected = true;\r\n\r\n // Updated selected colors list (if it doesn't already exist)\r\n this.sd.wizard.addSelectedColor(color);\r\n\r\n } else {\r\n this.deselectedColor(color);\r\n }\r\n }\r\n\r\n deselectedColor(color: Dto.ColorType, evt?: Event) {\r\n if (evt) evt.stopImmediatePropagation(); // Prevent ddl from closing when deselecting\r\n\r\n color.isSelected = false;\r\n\r\n // Remove from selected colors list\r\n var idx = this.sd.wizard.selectedColors.findIndex(c => c.colorUID == color.colorUID);\r\n if (idx > -1) {\r\n this.sd.wizard.selectedColors.splice(idx, 1);\r\n }\r\n }\r\n\r\n mouseOverColor(color: Dto.ColorType, e: MouseEvent) {\r\n var isSameElement = (e.target as any).classList.contains('hovered');\r\n if (!isSameElement) {\r\n (color as any).isDetailsVisible = true;\r\n }\r\n }\r\n\r\n mouseOutColor(color: Dto.ColorType, e: MouseEvent) {\r\n var rT = (e.relatedTarget as any);\r\n\r\n if (rT == null) {\r\n // Mouse went off the browser\r\n (color as any).isDetailsVisible = false;\r\n return;\r\n }\r\n\r\n // Also check for child elements\r\n var isSameElement = rT.classList.contains('hovered') || rT.classList.contains('color-details') || rT.classList.contains('detail') || rT.classList.contains('white-box');\r\n if (!isSameElement) {\r\n (color as any).isDetailsVisible = false;\r\n }\r\n }\r\n\r\n colorFamilies: Dto.ColorFamily[] = [];\r\n\r\n colorFamiliesSummary: string = this.COLOR_FAMILIES_LABEL;\r\n\r\n isColorFamiliesOpen = false;\r\n onColorFamiliesToggled() {\r\n this.isColorFamiliesOpen = !this.isColorFamiliesOpen;\r\n if (!this.isColorFamiliesOpen) {\r\n this.updateColorFamilies();\r\n }\r\n }\r\n\r\n updateColorFamilies() {\r\n var summary = this.getColorFamiliesSummary();\r\n\r\n // Determine if color families changed\r\n this._isColorFamiliesFilterChanged = summary != this.colorFamiliesSummary;\r\n\r\n this.colorFamiliesSummary = summary;\r\n\r\n if (this._isColorFamiliesFilterChanged) {\r\n this._filterChangedEvent.next();\r\n }\r\n }\r\n\r\n getColorFamiliesSummary() {\r\n var summary = this.colorFamilies\r\n .filter(s => s.isChecked)\r\n .map(s => s.name)\r\n .reduce((prev, next) => prev + (prev == '' ? '' : ', ') + next, '');\r\n\r\n return summary != '' ? summary : this.COLOR_FAMILIES_LABEL;\r\n }\r\n\r\n @observable lrvMin: number;\r\n @observable lrvMax: number;\r\n\r\n lrvMinChanged(oldVal: string, newVal: string) {\r\n this._isLrvFilterChanged = true;\r\n this._filterChangedEvent.next();\r\n }\r\n\r\n lrvMaxChanged(oldVal: string, newVal: string) {\r\n this._isLrvFilterChanged = true;\r\n this._filterChangedEvent.next();\r\n }\r\n\r\n colorStrips: Dto.ColorStrip[] = [];\r\n\r\n zoomedStrips: Dto.ColorStrip[] = [];\r\n\r\n selectedColorCollectionChanged(newSelection: Dto.ColorCollection, oldSelection: Dto.ColorCollection) {\r\n if (newSelection) {\r\n this._isColorCollectionFilterChanged = true;\r\n this.loadColorFamilies();\r\n this.resetSelectionBox();\r\n this.resetLrv();\r\n\r\n this._filterChangedEvent.next();\r\n } else {\r\n this._eventBus.publish('loading-done');\r\n }\r\n }\r\n\r\n loadColorCollectionsForSelectedProduct() {\r\n //if (this._lastSelectedProductNumber == (this.sd.wizard.selectedProduct && this.sd.wizard.selectedProduct.productNumber || null)) {\r\n // // Prevent loading the same colors again\r\n // this._eventBus.publish('loading-done');\r\n // return;\r\n //}\r\n\r\n var url = this._url.build(`~/api/ColorCollections/${this.sd.region.type}/${this.sd.wizard.selectedProduct.productNumber}`);\r\n return this._http.get(url).then(resp => {\r\n //this.colorCollections = resp.content; // This approach sometimes prevented setting the selected item (selectedColorCollection) from refreshing when reloading page\r\n this.colorCollections.splice(0, this.colorCollections.length);\r\n resp.content.forEach(cc => this.colorCollections.push(cc));\r\n\r\n // Set the default color collection\r\n if (this.colorCollections.length > 0) {\r\n var colorPreview = this.colorCollections.find(x => x.id == 5); // 5 == color preview\r\n if (colorPreview) {\r\n this.selectedColorCollection = colorPreview;\r\n } else {\r\n this.selectedColorCollection = this.colorCollections[0];\r\n }\r\n } else {\r\n this._eventBus.publish('loading-done');\r\n }\r\n\r\n // Keep track to prevent unnecessary reloading of color collections on subsequent page visits\r\n this._lastSelectedProductNumber = this.sd.wizard.selectedProduct.productNumber;\r\n });\r\n }\r\n\r\n loadColorStrips() {\r\n var url = this._url.build(`~/api/Colors/${this.sd.wizard.selectedProduct.productNumber}/${this.selectedColorCollection.id.toString()}`);\r\n return this._http.get(url).then(resp => {\r\n\r\n // populate color navigator with all color strips\r\n this.colorStrips = resp.content;\r\n\r\n // Reset to default size in case it was changed for the last color collection\r\n this.maxSelectionColumns = this.DEFAULT_MAX_SELECTION_COLUMNS;\r\n\r\n // populate color selector with first 8 color strips\r\n this.zoomedStrips = this.colorStrips.filter((cs, i) => i < this.maxSelectionColumns);\r\n\r\n // Set selection box size\r\n this.maxSelectionColumns = this.constrainMinMax(this.colorStrips.length, 1, this.maxSelectionColumns);\r\n this.selectionBoxWidthPx = `${this.maxSelectionColumns * 10}px`;\r\n this.selectionBoxHeightPx = `${(this.selectedColorCollection.colorStripSize * 10)}px`;\r\n\r\n this._eventBus.publish('loading-done');\r\n });\r\n }\r\n\r\n loadColorFamilies() {\r\n // Load color families for the selected color collection\r\n var url = this._url.build('~/api/ColorFamilies/GetColorFamiliesInCollection/' + this.selectedColorCollection.id);\r\n this._http.get(url).then(resp => {\r\n this.colorFamilies = resp.content;\r\n\r\n // Update ddl summary\r\n this.updateColorFamilies();\r\n });\r\n }\r\n\r\n constrainMinMax(value: number, min: number, max: number) {\r\n if (value > max) return max;\r\n else if (value < min) return min;\r\n else return value;\r\n }\r\n\r\n selectedColorStripIndex: number = 0;\r\n selectionBoxLeftPx: string;\r\n selectionBoxHeightPx: string;\r\n selectionBoxWidthPx: string;\r\n\r\n getVisibleColorStripIndex(cs: Dto.ColorStrip) {\r\n var visibleColorStrips = this.colorStrips.filter(cs => !cs.isHidden);\r\n for (var i = 0; i < visibleColorStrips.length; i++) {\r\n if (cs == visibleColorStrips[i])\r\n return i;\r\n }\r\n }\r\n\r\n selectColorStripInNavigator(colorStripIndex: number) {\r\n var visibleColorStrips = this.colorStrips.filter(cs => !cs.isHidden);\r\n\r\n // The selection box should be offset to the left by half of its width (maxSelectionColumns)\r\n // so that the selected color strip is approximately centered within the selection window.\r\n var offsetSelectedIndex = colorStripIndex - Math.ceil(this.maxSelectionColumns / 2) + 1;\r\n\r\n // Ensure offset index is in bounds\r\n var maxIndex = Math.max(\r\n Math.min(offsetSelectedIndex, (visibleColorStrips.length - this.maxSelectionColumns)),\r\n 0);\r\n\r\n // Show 8 color strips starting at the selected color strip\r\n this.zoomedStrips = visibleColorStrips.filter((cs, idx) => idx >= maxIndex && idx < maxIndex + this.maxSelectionColumns);\r\n\r\n // Set offset (current color strip width is 10px)\r\n this.selectionBoxLeftPx = `${maxIndex * 10}px`;\r\n\r\n // Ensure index is in bounds\r\n this.selectedColorStripIndex =\r\n Math.max(\r\n Math.min(colorStripIndex, (visibleColorStrips.length - this.maxSelectionColumns) + Math.ceil(this.maxSelectionColumns / 2) - 1),\r\n Math.ceil(this.maxSelectionColumns / 2));\r\n }\r\n\r\n navigateLeft() {\r\n var index = this.selectedColorStripIndex - 1;\r\n this.selectColorStripInNavigator(index);\r\n }\r\n\r\n navigateRight() {\r\n var index = this.selectedColorStripIndex + 1;\r\n this.selectColorStripInNavigator(index);\r\n }\r\n\r\n resetSelectedColors() {\r\n this.sd.wizard.selectedColors.forEach(c => c.isSelected = false);\r\n this.sd.wizard.selectedColors = [];\r\n this.getAllColors().filter(c => c.isSelected).forEach(c => c.isSelected = false);\r\n }\r\n\r\n resetSelectionBox() {\r\n this.selectColorStripInNavigator(0);\r\n }\r\n\r\n resetColorFamilies() {\r\n this.colorFamilies.forEach(f => f.isChecked = false);\r\n this.updateColorFamilies();\r\n }\r\n\r\n resetLrv() {\r\n this._eventBus.publish('reset-lrv');\r\n }\r\n\r\n resetFiltersAndSelections() {\r\n this.resetSelectionBox();\r\n this.resetColorFamilies();\r\n this.resetLrv();\r\n this.resetSelectedColors();\r\n }\r\n\r\n clearColorStrips() {\r\n this.colorStrips = [];\r\n }\r\n\r\n applyFilters() {\r\n\r\n console.log('Applying Color Filters');\r\n\r\n if (this._isColorCollectionFilterChanged) {\r\n\r\n this.loadColorStrips().then(() => {\r\n\r\n // Iterate all color chips\r\n this.colorStrips.forEach(cs => cs.items.forEach(c => {\r\n\r\n // Ensure isSelected matches selected colors in session-data\r\n c.isSelected = this.sd.wizard.selectedColors.some(sc => sc.colorUID == c.colorUID);\r\n\r\n }));\r\n });\r\n\r\n // Reset filter change state\r\n this._isColorCollectionFilterChanged = false;\r\n }\r\n\r\n if (this._isColorFamiliesFilterChanged || this._isLrvFilterChanged) {\r\n\r\n var checkedColorFamiliesById = Dictionary.fromArray(this.colorFamilies.filter(f => f.isChecked), f => f.id);\r\n\r\n var isInLrvRange = (color: Dto.ColorType) => {\r\n return color.lrv >= this.lrvMin && color.lrv <= this.lrvMax;\r\n };\r\n\r\n var isHiddenByColorFamilyFilter = (color: Dto.ColorType) => {\r\n return !(checkedColorFamiliesById.contains(color.colorFamilyId) || checkedColorFamiliesById.keys.length == 0 || color.colorFamilyId < 0);\r\n };\r\n\r\n var anyColorStripHiddenStateChanged = false;\r\n\r\n // Iterate all color chips\r\n this.colorStrips.forEach(cs => {\r\n\r\n var stripHasAnyVisibleChips = false;\r\n\r\n cs.items.forEach(c => {\r\n\r\n // Hide color chip if unless one of the following three conditions is true\r\n c.isHidden = isHiddenByColorFamilyFilter(c) || !isInLrvRange(c);\r\n\r\n if (!c.isHidden)\r\n stripHasAnyVisibleChips = true;\r\n });\r\n\r\n // Hide the color strip if it has no visible color chips\r\n var shouldBeHidden = !stripHasAnyVisibleChips;\r\n if (cs.isHidden != shouldBeHidden) {\r\n cs.isHidden = shouldBeHidden;\r\n anyColorStripHiddenStateChanged = true;\r\n }\r\n });\r\n\r\n if (anyColorStripHiddenStateChanged)\r\n // Reset selected index in navigator\r\n this.selectColorStripInNavigator(0);\r\n\r\n // Reset filter change states\r\n this._isColorFamiliesFilterChanged = false;\r\n this._isLrvFilterChanged = false;\r\n }\r\n }\r\n\r\n back() {\r\n this.sd.wizard.prev();\r\n }\r\n\r\n skipColorSelection() {\r\n this.sd.wizard.resetSelectedColors();\r\n this.sd.wizard.addSelectedColor(Dto.ColorType.noColor());\r\n this.sd.wizard.next();\r\n this.sd.save();\r\n }\r\n\r\n continueToReview() {\r\n this.sd.wizard.next();\r\n this.sd.save();\r\n }\r\n}\r\n",null,null,"import { autoinject, observable, bindable } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport { Dictionary } from '_services/dictionary';\r\nimport * as Rx from 'rxjs/Rx';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { SizeUtility } from '_controls/size-utility';\r\n\r\n@autoinject\r\nexport class ColorSearch {\r\n private _sizeUtil: SizeUtility;\r\n private _http: HttpClient;\r\n private _url: UrlService;\r\n private _searchTextChangedEvent = new Rx.Subject();\r\n\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public sd: SessionData\r\n ) {\r\n this._sizeUtil = new SizeUtility();\r\n this._http = new HttpClient();\r\n this._url = new UrlService();\r\n\r\n // Throttle the calls to doSearch\r\n this._searchTextChangedEvent.debounceTime(400).subscribe(e => this.doSearch());\r\n }\r\n\r\n searchResults: Dto.ColorType[] = [];\r\n\r\n @observable colorSearchText: string;\r\n\r\n searchDialogWidth = '500px';\r\n\r\n attached() {\r\n this.searchDialogWidth = this.calculateDialogWidth();\r\n window.onresize = () => {\r\n this.searchDialogWidth = this.calculateDialogWidth();\r\n };\r\n }\r\n\r\n calculateDialogWidth() {\r\n return (this._sizeUtil.calculateWindowWidth() - 25).toString() + 'px';\r\n }\r\n\r\n colorsChanged(newVal, oldVal) {\r\n this.reset();\r\n }\r\n\r\n colorSearchTextChanged(newSearch: string, oldSearch: string) {\r\n this._searchTextChangedEvent.next();\r\n \r\n }\r\n\r\n doSearch() {\r\n if (this.colorSearchText.length == 0) {\r\n this.searchResults = [];\r\n return;\r\n }\r\n\r\n var url = this._url.build('~/api/Colors/SearchColors');\r\n var req = { productNumber: this.sd.wizard.selectedProduct.productNumber, searchText: this.colorSearchText };\r\n this._http.post(url, req).then(resp => {\r\n this.searchResults = resp.content;\r\n this.syncSearchResultsWithSelectedColors();\r\n });\r\n }\r\n\r\n isColorSearchFocused = false;\r\n\r\n isColorSearchOpen = false;\r\n colorSearchToggled() {\r\n this.isColorSearchOpen = !this.isColorSearchOpen;\r\n this.isColorSearchFocused = this.isColorSearchOpen;\r\n\r\n if (this.isColorSearchOpen) {\r\n this.syncSearchResultsWithSelectedColors();\r\n }\r\n }\r\n\r\n selectColor(color: Dto.ColorType) {\r\n this._eventBus.publish('color-search-selected', color);\r\n }\r\n\r\n syncSearchResultsWithSelectedColors() {\r\n this.searchResults.forEach(r => {\r\n \r\n var match = this.sd.wizard.selectedColors.find(s => s.colorUID == r.colorUID);\r\n if (match) {\r\n r.isSelected = true;\r\n } else\r\n r.isSelected = false;\r\n });\r\n }\r\n\r\n reset() {\r\n this.colorSearchText = '';\r\n this.searchResults = [];\r\n }\r\n}",null,null,"import { autoinject } from 'aurelia-framework';\r\nimport { SessionData } from '_models/session-data';\r\n\r\n@autoinject\r\nexport class ProductSelector {\r\n\r\n constructor(\r\n public sd: SessionData\r\n ) {\r\n\r\n }\r\n\r\n detached() {\r\n console.debug('resetting wizard state...');\r\n this.sd.resetWizard();\r\n }\r\n}\r\n",null,null,"import { autoinject, observable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport { SortService } from '_services/sort-service';\r\nimport * as Rx from 'rxjs/Rx';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ConfirmDialog } from '_controls/confirm-dialog';\r\n\r\n@autoinject\r\nexport class ProductType {\r\n private _http: HttpClient;\r\n private _url: UrlService;\r\n private _subscriptions: Subscription[] = [];\r\n private _filterChangedEvent = new Rx.Subject();\r\n private _searchTextChangedEvent = new Rx.Subject();\r\n\r\n constructor(\r\n private _element: Element,\r\n private _eventBus: EventAggregator,\r\n public router: Router,\r\n public sd: SessionData,\r\n public dialogSvc: DialogService\r\n ) {\r\n this._http = new HttpClient();\r\n this._url = new UrlService();\r\n\r\n // Load product uses ddl, and then try to load selected product use from session\r\n this.loadProductUses().then(x => {\r\n var productUse = this.productUses.find(p => p.id == (this.sd.wizard.selectedProductUse && this.sd.wizard.selectedProductUse.id || null));\r\n this.selectedProductUse = productUse;\r\n });\r\n\r\n // Throttle the calls to applyFilters\r\n this._filterChangedEvent.debounceTime(100).subscribe(e => this.applyFilters());\r\n this._searchTextChangedEvent.debounceTime(400).subscribe(e => this.applyFilters());\r\n }\r\n\r\n readonly PRODUCT_USE_LABEL = 'PRODUCT TYPE*';\r\n readonly SUBSTRATE_LABEL = 'SUBSTRATE*';\r\n readonly SHEEN_LABEL = 'SHEEN';\r\n readonly OPTIONS_LABEL = 'OPTIONS';\r\n\r\n attached() {\r\n this.affixTableHeaderOnScroll();\r\n\r\n this._subscriptions = [\r\n this._eventBus.subscribe('region-changed', regionType => this._filterChangedEvent.next())\r\n ];\r\n \r\n this._filterChangedEvent.next();\r\n }\r\n\r\n detached() {\r\n this._subscriptions.forEach(s => s.dispose());\r\n }\r\n \r\n // Products\r\n productTypes: Dto.ProductType[] = [];\r\n\r\n // Search\r\n @observable searchText: string;\r\n\r\n // Product Use Filter\r\n productUses: Dto.ProductUse[] = [];\r\n @observable selectedProductUse: Dto.ProductUse = null;\r\n\r\n // Substrate Filter\r\n substrates: Dto.Substrate[] = [];\r\n @observable selectedSubstrate: Dto.Substrate = null;\r\n isSubstratesDisabled = true;\r\n\r\n // Sheen Filter\r\n sheens = [];\r\n\r\n @computedFrom('sheens')\r\n get nonTransparentSheens() {\r\n // The html template binds to the computed property \"nonTransparentSheens\" (no parenthesis)\r\n return this.sheens.filter(s => !s.isTransparency);\r\n }\r\n @computedFrom('sheens')\r\n get transparentSheens() {\r\n // The html template binds to the computed property \"transparentSheens\" (no parenthesis)\r\n return this.sheens.filter(s => s.isTransparency);\r\n }\r\n isSheensDisabled = true;\r\n sheensSummary: string = this.SHEEN_LABEL;\r\n\r\n isSheensOpen: boolean = false;\r\n onSheensToggled() {\r\n this.isSheensOpen = !this.isSheensOpen;\r\n if (!this.isSheensOpen) {\r\n this.updateSheensSummary();\r\n this.onSheensClosed();\r\n }\r\n }\r\n\r\n updateSheensSummary() {\r\n var summary = this.sheens\r\n .filter(s => s.isChecked)\r\n .map(s => s.name)\r\n .reduce((prev, next) => prev + (prev == '' ? '' : ', ') + next, '');\r\n\r\n this.sheensSummary = summary != '' ? summary : this.SHEEN_LABEL;\r\n }\r\n\r\n // Options filter checkboxes\r\n isOption_CHPS = false;\r\n isOption_LEEDV4 = false;\r\n isOption_MPI = false;\r\n isOption_AsthmaAllergy = false;\r\n isOption_VOC = false;\r\n\r\n optionsSummary: string = this.OPTIONS_LABEL;\r\n\r\n\r\n // Options dropdown state\r\n isOptionsOpen: boolean = false;\r\n onOptionsToggled() {\r\n this.isOptionsOpen = !this.isOptionsOpen;\r\n if (!this.isOptionsOpen) {\r\n this.updateOptionsSummary();\r\n this._filterChangedEvent.next();\r\n }\r\n }\r\n\r\n updateOptionsSummary() {\r\n var options = [\r\n { name: 'CHPS', isChecked: this.isOption_CHPS },\r\n { name: 'LEED V4', isChecked: this.isOption_LEEDV4 },\r\n { name: 'MPI', isChecked: this.isOption_MPI },\r\n { name: 'ASTHMA & ALLERGY', isChecked: this.isOption_AsthmaAllergy },\r\n { name: 'ZERO TO LOW VOC', isChecked: this.isOption_VOC }\r\n ];\r\n\r\n var summary = options\r\n .filter(opt => opt.isChecked)\r\n .map(opt => opt.name)\r\n .reduce((prev, next) => prev + (prev == '' ? '' : ', ') + next, '');\r\n\r\n this.optionsSummary = summary != '' ? summary : this.OPTIONS_LABEL;\r\n }\r\n\r\n loadProductUses() {\r\n var url = this._url.build('~/api/ProductUses/');\r\n return this._http.get(url).then(resp => {\r\n this.productUses = resp.content;\r\n });\r\n }\r\n\r\n selectedProductUseChanged(newSelection: Dto.ProductUse, oldSelection: Dto.ProductUse) {\r\n\r\n // Persist selection with session\r\n this.sd.wizard.selectedProductUse = newSelection;\r\n\r\n if (newSelection != null && newSelection.application != null) {\r\n // Load substrates for the selected product use, then try to load selected substrate from session\r\n this.loadSubstrates(newSelection.application).then(x => {\r\n var substrate = this.substrates.find(s => s.id == (this.sd.wizard.selectedSubstrate && this.sd.wizard.selectedSubstrate.id || null));\r\n this.selectedSubstrate = substrate;\r\n });\r\n this.isSubstratesDisabled = false;\r\n } else {\r\n this.resetSubstrate();\r\n }\r\n\r\n this._filterChangedEvent.next();\r\n }\r\n\r\n loadSubstrates(interiorExterior: string) {\r\n var url = this._url.build('~/api/Substrates/' + interiorExterior);\r\n return this._http.get(url).then(resp => {\r\n this.substrates = resp.content;\r\n });\r\n }\r\n\r\n selectedSubstrateChanged(newSelection: Dto.Substrate, oldSelection: Dto.Substrate) {\r\n\r\n // Persist selection with session\r\n this.sd.wizard.selectedSubstrate = newSelection;\r\n\r\n if (newSelection != null) {\r\n this.loadSheens(newSelection.id).then(resp => {\r\n this.isSheensDisabled = false;\r\n this.updateSheensSummary();\r\n });\r\n } else {\r\n this.resetSheens();\r\n }\r\n\r\n this._filterChangedEvent.next();\r\n }\r\n\r\n loadSheens(substrateId: number) {\r\n var url = this._url.build('~/api/Sheens/BySubstrateId/' + substrateId.toString());\r\n return this._http.get(url).then(resp => {\r\n this.sheens = resp.content;\r\n });\r\n }\r\n\r\n onSheensClosed() {\r\n this._filterChangedEvent.next();\r\n }\r\n\r\n searchTextChanged(newValue, oldValue) {\r\n this._searchTextChangedEvent.next();\r\n }\r\n\r\n resetProductUse() {\r\n this.selectedProductUse = null;\r\n this.sd.wizard.selectedProductUse = null;\r\n }\r\n\r\n resetSubstrate() {\r\n this.isSubstratesDisabled = true;\r\n this.selectedSubstrate = null;\r\n this.sd.wizard.selectedSubstrate = null;\r\n }\r\n\r\n resetSheens() {\r\n this.isSheensDisabled = true;\r\n this.sheens = [];\r\n this.updateSheensSummary();\r\n }\r\n\r\n resetOptions() {\r\n this.isOption_CHPS = false;\r\n this.isOption_LEEDV4 = false;\r\n this.isOption_MPI = false;\r\n this.isOption_AsthmaAllergy = false;\r\n this.isOption_VOC = false;\r\n this.updateOptionsSummary();\r\n }\r\n\r\n resetAll() {\r\n this.resetProductUse();\r\n this.resetSubstrate();\r\n this.resetSheens();\r\n this.resetOptions();\r\n this.sd.wizard.selectedProduct = null;\r\n }\r\n\r\n productSort = new SortService('productFamily', 'asc');\r\n\r\n sortProducts(propertyName: string) {\r\n this.productSort.sort(this.productTypes, propertyName);\r\n }\r\n\r\n selectProduct(product: Dto.ProductType) {\r\n\r\n var selectedProductNumber = (this.sd.wizard.selectedProduct && this.sd.wizard.selectedProduct.productNumber || null);\r\n\r\n var isProductChange = product.productNumber != selectedProductNumber;\r\n var isExistingColorSelections = this.sd.wizard.selectedColors.length > 0;\r\n\r\n var setSelectedProduct = () => \r\n this.sd.wizard.selectedProduct = isProductChange ? product : null; // change product or toggle off if same product was clicked\r\n\r\n if (isExistingColorSelections) {\r\n\r\n // Confirm if the user really wants to change products....\r\n this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: 'Changing to a new product line will remove your existing color selections. Are you sure you want to continue?'\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n // Reset selected colors and change product\r\n this.sd.wizard.resetSelectedColors();\r\n setSelectedProduct();\r\n }\r\n });\r\n }\r\n else {\r\n setSelectedProduct();\r\n }\r\n }\r\n\r\n getCanCutImagePath(product: Dto.ProductType) {\r\n var relativeUrl = `~/images/CanCuts/${product.canCutImage}`;\r\n var url = this._url.build(relativeUrl);\r\n return url;\r\n }\r\n\r\n continueToColor() { \r\n this.sd.wizard.next();\r\n this.sd.save();\r\n }\r\n\r\n applyFilters() {\r\n if (this.sd.region == null)\r\n return;\r\n\r\n console.info(\"Applying Product Type Filters\");\r\n var filter = new Dto.ProductTypeFilter();\r\n filter.searchText = this.searchText != null ? this.searchText : '';\r\n filter.productUseId = this.selectedProductUse != null ? this.selectedProductUse.id : 0;\r\n // TODO: Implement region selection\r\n filter.Region = this.sd.region.type;\r\n filter.chps = this.isOption_CHPS;\r\n filter.leedv4 = this.isOption_LEEDV4;\r\n filter.mpi = this.isOption_MPI;\r\n filter.asthmaAllergy = this.isOption_AsthmaAllergy;\r\n filter.voc = this.isOption_VOC;\r\n filter.substrateId = this.selectedSubstrate != null ? this.selectedSubstrate.id : 0;\r\n filter.sheenIds = this.sheens.filter(s => s.isChecked).map(s => s.id);\r\n\r\n // Get product types\r\n var url = this._url.build('~/api/ProductTypes/Filter/');\r\n this._http.post(url, filter).then(resp => {\r\n this.productTypes = resp.content;\r\n });\r\n }\r\n\r\n isHeaderFixed = false;\r\n\r\n affixTableHeaderOnScroll() {\r\n var thead = this._element.querySelector('#product-list-row thead');\r\n var theadDistTop = thead.getBoundingClientRect().top;\r\n window.onscroll = () => {\r\n this.isHeaderFixed = window.scrollY >= theadDistTop;\r\n };\r\n }\r\n}\r\n",null,null,"import { autoinject, observable, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ProductType } from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport * as Dto from '_models/dtos';\r\n\r\n@autoinject\r\nexport class ProgressWizard {\r\n\r\n private _url: UrlService;\r\n\r\n constructor(\r\n public router: Router,\r\n public sd: SessionData\r\n ) {\r\n this._url = new UrlService();\r\n }\r\n \r\n @bindable step = '1';\r\n\r\n step1Class = 'active';\r\n step2Class = '';\r\n step3Class = '';\r\n\r\n attached() {\r\n this.updateWizardProgress();\r\n }\r\n\r\n getCanCutImagePath(product: Dto.ProductType) {\r\n var relativeUrl = `~/images/CanCuts/${product.canCutImage}`;\r\n var url = this._url.build(relativeUrl);\r\n return url;\r\n }\r\n\r\n updateWizardProgress() {\r\n // Set CSS classes\r\n switch (this.step) {\r\n case '2':\r\n this.step1Class = 'completed';\r\n this.step2Class = 'current';\r\n this.step3Class = '';\r\n break;\r\n case '3':\r\n this.step1Class = 'completed';\r\n this.step2Class = 'completed';\r\n this.step3Class = 'current';\r\n break;\r\n case '1':\r\n default:\r\n this.step1Class = 'current';\r\n this.step2Class = '';\r\n this.step3Class = '';\r\n }\r\n }\r\n\r\n editProductType() {\r\n this.sd.wizard.index = 0;\r\n this.sd.save();\r\n }\r\n}",null,null,"import { autoinject, observable, bindable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ConfirmDialog } from '_controls/confirm-dialog';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport { SizeUtility } from '_controls/size-utility';\r\nimport { SortService } from '_services/sort-service';\r\n\r\n@autoinject\r\nexport class ReviewSelections {\r\n private _http: HttpClient;\r\n private _url: UrlService;\r\n\r\n constructor(\r\n public router: Router,\r\n public sd: SessionData,\r\n public dialogSvc: DialogService\r\n ) {\r\n this._http = new HttpClient();\r\n this._url = new UrlService();\r\n }\r\n \r\n selections: Dto.WizardProductColorSelection[] = [];\r\n\r\n attached() {\r\n \r\n this.loadSelectionsFromSession();\r\n }\r\n\r\n loadSelectionsFromSession() {\r\n this.selections = this.sd.wizard.selectedColors.map(c =>\r\n new Dto.WizardProductColorSelection(this.sd.wizard.selectedProductUse, this.sd.wizard.selectedSubstrate, this.sd.wizard.selectedProduct, c));\r\n }\r\n \r\n selectionSort = new SortService('colorNumber', 'asc');\r\n\r\n sortSelections(propertyName: string) {\r\n this.selectionSort.sort(this.selections, propertyName);\r\n }\r\n\r\n removeSelection(sel: Dto.WizardProductColorSelection) {\r\n // Confirm if the user really wants to change products....\r\n this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: `Are you sure you want to remove the selection '${sel.color.colorNumber} - ${sel.color.colorName}'?`\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n // Remove from selected colors list\r\n var idx = this.sd.wizard.selectedColors.findIndex(c => c.colorUID == sel.color.colorUID);\r\n if (idx > -1) {\r\n this.sd.wizard.selectedColors.splice(idx, 1);\r\n }\r\n\r\n // Refresh selection list\r\n this.loadSelectionsFromSession();\r\n\r\n // Re-apply last sort\r\n this.selectionSort.sort(this.selections, this.selectionSort.sortProperty, this.selectionSort.sortDirection);\r\n }\r\n });\r\n }\r\n\r\n back() {\r\n this.sd.wizard.prev();\r\n this.sd.save();\r\n }\r\n\r\n addToProject() {\r\n this.sd.addWizardSelections();\r\n this.sd.save();\r\n this.continueToProjectSchedule();\r\n }\r\n\r\n continueToProjectSchedule() {\r\n var url = this._url.build('~/project-schedule');\r\n this.router.navigate(url);\r\n }\r\n}\r\n",null,null,"import { inject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport * as noUiSlider from 'nouislider';\r\n\r\n@inject(Element, EventAggregator)\r\nexport class Slider {\r\n\r\n private _subscriptions: Subscription[] = [];\r\n private _slider: any;\r\n \r\n constructor(\r\n public element: Element,\r\n private _eventBus: EventAggregator,\r\n ) {\r\n }\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) min: number;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) max: number;\r\n\r\n attached() {\r\n\r\n this.tryInitializeSlider();\r\n\r\n this._subscriptions = [\r\n this._eventBus.subscribe('reset-lrv', e => {\r\n this._slider.noUiSlider.set([0, 100]);\r\n })\r\n ];\r\n }\r\n\r\n detached() {\r\n this._subscriptions.forEach(s => s.dispose());\r\n }\r\n\r\n tryInitializeSlider() {\r\n if (this._slider)\r\n return;\r\n\r\n var slider = this.element.querySelector('#slider');\r\n\r\n noUiSlider.create(slider, {\r\n start: [0, 100],\r\n connect: true,\r\n behaviour: 'drag',\r\n step: 10,\r\n margin: 10,\r\n range: {\r\n 'min': 0,\r\n 'max': 100\r\n }\r\n });\r\n\r\n slider.noUiSlider.on('update', (values, handle) => {\r\n if (handle == 0)\r\n this.min = parseFloat(values[handle]);\r\n else\r\n this.max = parseFloat(values[handle]);\r\n });\r\n\r\n this._slider = slider;\r\n }\r\n}",null,null,"import { autoinject } from \"aurelia-framework\";\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { SessionData } from '_models/session-data';\r\n\r\n@autoinject\r\nexport class LocationDialog {\r\n\r\n constructor(\r\n public controller: DialogController,\r\n public sd: SessionData) {\r\n }\r\n\r\n locationName: string = '';\r\n\r\n activate(model) {\r\n this.locationName = model;\r\n }\r\n\r\n ok() {\r\n if (this.locationName == '')\r\n return;\r\n\r\n // Validate\r\n var exists = this.sd.locations.some(l => l.toLowerCase() == this.locationName.toLowerCase());\r\n if (exists) {\r\n // TODO: Implement validation framework\r\n alert('Location already exists');\r\n return;\r\n }\r\n\r\n this.controller.ok(this.locationName);\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel()\r\n }\r\n}\r\n",null,null,"import { autoinject } from \"aurelia-framework\";\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { SessionData } from '_models/session-data';\r\nimport * as Dto from '_models/dtos';\r\nimport { SortService } from '_services/sort-service';\r\n\r\n@autoinject\r\nexport class LocationProductsDialog {\r\n\r\n constructor(\r\n public controller: DialogController,\r\n public sd: SessionData) {\r\n\r\n this.products = [];\r\n }\r\n\r\n /**\r\n * The location that products will be added to.\r\n */\r\n location: Dto.ScheduledLocationProjection;\r\n\r\n /**\r\n * A list of all user selected products to choose from.\r\n */\r\n products: any[];\r\n\r\n\r\n productSorter = new SortService('colorNumber', 'asc');\r\n\r\n sortProducts(propertyName: string) {\r\n this.productSorter.sort(this.sd.allSelectedProducts, propertyName);\r\n }\r\n\r\n\r\n activate(location: Dto.ScheduledLocationProjection) {\r\n \r\n this.location = location;\r\n\r\n // Populate selectable products from the list of user selected products in the session\r\n this.products = this.sd.allSelectedProducts\r\n .map(p => {\r\n var selectableProduct = p as any;\r\n // Append 'isSelected' property\r\n selectableProduct.isSelected = false;\r\n return selectableProduct;\r\n });\r\n }\r\n \r\n addProducts() {\r\n\r\n // Return selected products array\r\n var selectedProducts = this.products\r\n .filter(p => p.isSelected)\r\n .map(p => p as Dto.WizardProductColorSelection);\r\n\r\n this.controller.ok(selectedProducts);\r\n }\r\n\r\n cancel() {\r\n this.controller.cancel()\r\n }\r\n}\r\n\r\n//class SelectableItem {\r\n// constructor(item: TItem) {\r\n// this.item = item;\r\n// }\r\n\r\n// item: TItem;\r\n// isSelected: boolean;\r\n//}\r\n",null,null,"import { autoinject, observable, bindable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { ConfirmDialog } from '_controls/confirm-dialog';\r\nimport { LocationDialog } from 'project-schedule/location-dialog';\r\nimport { LocationProductsDialog } from 'project-schedule/location-products-dialog';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { SizeUtility } from '_controls/size-utility';\r\nimport { SortService } from '_services/sort-service';\r\n\r\n@autoinject\r\nexport class ProjectSchedule {\r\n private _url = new UrlService();\r\n private _http: HttpClient;\r\n private _subscriptions: Subscription[] = [];\r\n private _lastSelectedLocationName: string;\r\n\r\n constructor(\r\n private _eventBus: EventAggregator,\r\n public router: Router,\r\n public sd: SessionData,\r\n public dialogSvc: DialogService\r\n ) {\r\n this._http = new HttpClient();\r\n this.specOutputUrl = this._url.build('~/api/SpecReport', true);\r\n }\r\n\r\n activeTabIndex = 0;\r\n \r\n specOutputUrl: string;\r\n \r\n productSorter = new SortService('colorNumber', 'asc');\r\n\r\n sortProducts(propertyName: string) {\r\n this.productSorter.sort(this.sd.allSelectedProducts, propertyName);\r\n }\r\n\r\n /**\r\n * Projects all selected products-colors and their assigned locations in the 'products' tab.\r\n */\r\n @computedFrom('sd.allSelectedProducts.length', 'activeTabIndex') // Refreshes 'products' when array length changes, or when tab index changes\r\n get products() : Dto.ScheduledProductProjection[] {\r\n // Display all product-color selections and also include any assigned locations\r\n var productsWithRooms = this.sd.allSelectedProducts.map(p => {\r\n // Get scheduled locations for each product-color selection\r\n var scheduledLocations = this.sd.schedule.filter(s => s.color.colorUID== p.color.colorUID).map(s => s.location); \r\n return new Dto.ScheduledProductProjection(p.productUse, p.substrate, p.product, p.color, scheduledLocations);\r\n });\r\n return productsWithRooms;\r\n }\r\n\r\n /**\r\n * Projects all created locations and their assigned products-colors in the 'locations' tab.\r\n */\r\n @computedFrom('sd.locations.length', 'activeTabIndex') // Refreshes 'locations' when array length changes, or when tab index changes\r\n get locations(): Dto.ScheduledLocationProjection[] {\r\n // Display all locations along with a list of assigned product-color selections\r\n var locationsWithProducts = this.sd.locations.map(locName => {\r\n // Get scheduled product-color selections for each location\r\n var scheduledProducts = this.sd.schedule.filter(s => s.location == locName);\r\n return new Dto.ScheduledLocationProjection(locName, scheduledProducts);\r\n }).sort((a, b) => {\r\n if (a.name > b.name) return 1;\r\n else if (b.name > a.name) return -1;\r\n else return 0;\r\n });\r\n\r\n // Try to open the selected location\r\n var selectedLocation = locationsWithProducts.find(l => l.name == this._lastSelectedLocationName);\r\n if (selectedLocation)\r\n selectedLocation.isOpen = true;\r\n\r\n return locationsWithProducts;\r\n }\r\n\r\n /**\r\n * Toggles a ScheduledLocationProjection.\r\n */\r\n toggle(loc: Dto.ScheduledLocationProjection) {\r\n loc.isOpen = !loc.isOpen;\r\n\r\n if (loc.isOpen)\r\n this._lastSelectedLocationName = loc.name;\r\n else\r\n this._lastSelectedLocationName = null;\r\n }\r\n\r\n /**\r\n * Removes a product from the 'products' tab along with any room assignments.\r\n * @param sel - The selected product.\r\n */\r\n removeProduct(sel: Dto.ScheduledProductProjection) {\r\n\r\n // Confirm\r\n this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: `Are you sure you want to remove '${sel.product.productFamily} - ${sel.color.colorName}'?`\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n // Remove product from allSelectedProducts (should be exactly one entry)\r\n var idx = this.sd.allSelectedProducts.findIndex(item => item.product.productFamily == sel.product.productFamily && item.color.colorUID == sel.color.colorUID);\r\n this.sd.allSelectedProducts.splice(idx, 1);\r\n\r\n // Remove product from schedule (may be multiple entries)\r\n this.sd.schedule = this.sd.schedule.filter(item => !(item.product.productFamily == sel.product.productFamily && item.color.colorUID == sel.color.colorUID));\r\n\r\n this.sd.save();\r\n }\r\n });\r\n }\r\n\r\n addLocation() {\r\n\r\n var defaultLocationName = '';\r\n\r\n // Show 'Location' dialog\r\n this.dialogSvc.open({\r\n viewModel: LocationDialog,\r\n model: defaultLocationName\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n var locationName = e.output;\r\n this._lastSelectedLocationName = locationName;\r\n this.sd.locations.push(locationName);\r\n this.sd.save();\r\n }\r\n });\r\n }\r\n\r\n editLocation(location: Dto.ScheduledLocationProjection, evt: Event) {\r\n\r\n var oldLocationName = location.name;\r\n\r\n // Show 'Location' dialog\r\n this.dialogSvc.open({\r\n viewModel: LocationDialog,\r\n model: location.name\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n var newLocationName = e.output;\r\n\r\n // Update session locations\r\n var idx = this.sd.locations.findIndex(l => l == oldLocationName);\r\n this.sd.locations[idx] = newLocationName;\r\n\r\n // Update session schedule\r\n this.sd.schedule\r\n .filter(s => s.location == oldLocationName)\r\n .forEach(s => s.location = newLocationName);\r\n\r\n // Update view manually (rather than refreshing entire 'locations' projection)\r\n location.name = newLocationName;\r\n\r\n this.sd.save();\r\n }\r\n });\r\n\r\n evt.stopPropagation();\r\n }\r\n\r\n removeLocation(location: Dto.ScheduledLocationProjection, evt: Event) {\r\n // Confirm\r\n this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: `Are you sure you want to remove '${location.name}'?`\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n // Update schedule in session\r\n this.sd.schedule\r\n .filter(s => s.location == location.name)\r\n .forEach(s => {\r\n var idx = this.sd.schedule.findIndex(s => s.location == location.name);\r\n this.sd.schedule.splice(idx, 1)\r\n });\r\n\r\n var idx = this.sd.locations.findIndex(l => l == location.name);\r\n this.sd.locations.splice(idx, 1);\r\n\r\n this.sd.save();\r\n }\r\n });\r\n\r\n evt.stopPropagation();\r\n }\r\n\r\n addProductsToLocation(location: Dto.ScheduledLocationProjection) {\r\n // Show 'Add Product to Location' dialog\r\n this.dialogSvc.open({\r\n viewModel: LocationProductsDialog,\r\n model: location\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n var selectedProducts : Dto.WizardProductColorSelection[] = e.output;\r\n\r\n // Get schedule items that haven't already been added\r\n var nonExistingProducts = selectedProducts.filter(p => {\r\n var existsInSchedule = this.sd.schedule.some(s =>\r\n s.productUse.id == p.productUse.id && \r\n s.substrate.id == p.substrate.id &&\r\n s.location == location.name &&\r\n s.product.productFamily == p.product.productFamily &&\r\n s.sheenName == p.sheenName &&\r\n s.color.colorUID == p.color.colorUID);\r\n return !existsInSchedule;\r\n });\r\n\r\n // Update schedule in session\r\n var scheduleItems = nonExistingProducts\r\n .map(p => new Dto.ScheduleItem(p.productUse, p.substrate, p.product, p.color, location.name));\r\n\r\n scheduleItems.forEach(s => this.sd.schedule.push(s));\r\n\r\n // Update location view manually (rather than refreshing entire 'locations' projection)\r\n scheduleItems.forEach(p => location.selections.push(p));\r\n\r\n // Re-apply current sort for this location's product selections\r\n location.sorter.sort(location.selections, location.sorter.sortProperty, location.sorter.sortDirection);\r\n\r\n this.sd.save();\r\n }\r\n });\r\n }\r\n \r\n removeProductFromLocation(selection: Dto.WizardProductColorSelection, location: Dto.ScheduledLocationProjection) {\r\n\r\n // Confirm\r\n this.dialogSvc.open({\r\n viewModel: ConfirmDialog,\r\n model: `Are you sure you want to remove '${selection.product.productFamily} - ${selection.color.colorName}' from '${location.name}'?`\r\n }).whenClosed(e => {\r\n\r\n if (!e.wasCancelled) {\r\n\r\n // Update schedule in session\r\n var idx = this.sd.schedule.findIndex(s => s.location == location.name && s.product.productFamily == selection.product.productFamily && s.color.colorUID == selection.color.colorUID);\r\n this.sd.schedule.splice(idx, 1);\r\n\r\n // Update location view manually (rather than refreshing entire 'locations' projection)\r\n var idx2 = location.selections.findIndex(s => s.product.productFamily == selection.product.productFamily && s.color.colorUID == selection.color.colorUID);\r\n location.selections.splice(idx2, 1); \r\n\r\n this.sd.save();\r\n }\r\n });\r\n }\r\n\r\n goToProductSelector() {\r\n var url = this._url.build('~/product-selector');\r\n this.router.navigate(url);\r\n }\r\n\r\n prepareForm(ev: Event) {\r\n \r\n // Get scheduled items for report\r\n var scheduledItems = this.sd.schedule.map(item => {\r\n var dto = new Dto.ProjectScheduleItem();\r\n \r\n dto.LocationName = `${item.location} - ${item.productUse.application} - ${item.substrate.longName}`;\r\n dto.LocationTag = item.notes;\r\n dto.Color = item.color.color;\r\n dto.ColorName = item.color.colorName;\r\n dto.ColorNumber = item.color.colorNumber;\r\n dto.ColorUID = item.color.colorUID; \r\n dto.ProductFamily = item.productFamily;\r\n dto.ProductName = item.product.productFamily;\r\n dto.ProductNumber = item.product.productNumber;\r\n dto.SheenId = 0; // TODO: Implement SheenId\r\n dto.SheenName = item.product.sheenName;\r\n return dto;\r\n });\r\n\r\n // Also include products that have not been added to the schedule (no location)\r\n var nonScheduledItems = this.sd.allSelectedProducts.filter(p => {\r\n var productInSchedule = this.sd.schedule.find(s => s.product.productNumber == p.product.productNumber);\r\n return productInSchedule == null;\r\n }).map(item => {\r\n var dto = new Dto.ProjectScheduleItem();\r\n\r\n dto.LocationName = 'NO LOCATION ASSIGNED'; // Assigned via the ROOM TAGS tab\r\n dto.LocationTag = ''; // Assigned via the ROOM TAGS tab\r\n dto.Color = item.color.color;\r\n dto.ColorName = item.color.colorName;\r\n dto.ColorNumber = item.color.colorNumber;\r\n dto.ColorUID = item.color.colorUID; \r\n dto.ProductFamily = item.productFamily;\r\n dto.ProductName = item.product.productFamily;\r\n dto.ProductNumber = item.product.productNumber;\r\n dto.SheenId = 0; // TODO: Implement SheenId\r\n dto.SheenName = item.product.sheenName;\r\n return dto;\r\n });\r\n\r\n var allItems = scheduledItems.concat(nonScheduledItems);\r\n\r\n var form = ev.srcElement.parentElement;\r\n form.elements['scheduleItems'].value = JSON.stringify(allItems);\r\n form.submit();\r\n }\r\n}\r\n",null,null,"import { FrameworkConfiguration } from 'aurelia-framework';\r\n\r\nexport function configure(config: FrameworkConfiguration) {\r\n //config.globalResources([]);\r\n}\r\n","import { autoinject } from \"aurelia-framework\";\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { ValidationRules, ValidationControllerFactory, ValidationController, validateTrigger } from 'aurelia-validation';\r\nimport { UrlService } from '_services/url-service';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport * as Dto from '_models/dtos';\r\n\r\n@autoinject\r\nexport class FeedbackDialog {\r\n private _url: UrlService;\r\n private _http: HttpClient;\r\n\r\n constructor(\r\n public controller: DialogController,\r\n validationControllerFactory: ValidationControllerFactory\r\n ) {\r\n this._url = new UrlService();\r\n this._http = new HttpClient();\r\n\r\n this.validation = validationControllerFactory.createForCurrentScope();\r\n this.validation.validateTrigger = validateTrigger.change;\r\n this.feedback = new Dto.Feedback();\r\n\r\n ValidationRules\r\n .ensure((f: Dto.Feedback) => f.firstName).required()\r\n .ensure((f: Dto.Feedback) => f.lastName).required()\r\n .ensure((f: Dto.Feedback) => f.email).required().email()\r\n .ensure((f: Dto.Feedback) => f.feedback).required()\r\n .on(this.feedback);\r\n }\r\n\r\n validation: ValidationController;\r\n\r\n feedback: Dto.Feedback;\r\n\r\n isSending = false;\r\n\r\n /**\r\n * This field is fake and is used only as a \"honeypot\" captcha\r\n */\r\n details: string = '';\r\n \r\n cancel() {\r\n this.controller.cancel();\r\n }\r\n\r\n send() {\r\n\r\n this.validation.validate().then(result => {\r\n\r\n var isBot = this.details != '';\r\n\r\n if (isBot) {\r\n\r\n // Close dialog and do nothing\r\n this.controller.cancel();\r\n\r\n } else if (result.valid) {\r\n\r\n this.isSending = true;\r\n\r\n try {\r\n\r\n // Send feedback via SMTP\r\n var url = this._url.build('~/api/Feedback');\r\n var req = this.feedback;\r\n this._http.post(url, req).then(resp => {\r\n\r\n if (!resp.content.isSuccess) {\r\n // SMTP failed -- fallback\r\n this.sendManually(resp.content.feedbackEmail)\r\n }\r\n\r\n // Close dialog\r\n this.controller.ok();\r\n });\r\n\r\n } catch (ex) {\r\n this.isSending = false;\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n sendManually(feedbackEmail: string) {\r\n // Send feedback email\r\n var f = this.feedback;\r\n var mailto = feedbackEmail;\r\n var subject = 'Spec Writer Web Feedback';\r\n var bodyAndSignature = `${f.feedback}%0A%0A${f.firstName} ${f.lastName}%0A${f.email}%0A`;\r\n window.open(`mailto:${mailto}?subject=${subject}&body=${bodyAndSignature}`, '_self'); \r\n }\r\n}\r\n\r\n",null,null,"export class FooterLogos {\r\n\r\n}",null,null,"export class TermsAndConditions {\r\n}",null,null,"import { RouterConfiguration, Router, RouteConfig } from 'aurelia-router';\r\nimport { bindable, autoinject, observable, computedFrom } from 'aurelia-framework';\r\nimport * as Dto from '_models/dtos';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { RegionsDialog } from '_controls/regions-dialog';\r\nimport { SessionData } from '_models/session-data';\r\nimport { UrlService } from '_services/url-service';\r\n\r\n\r\n@autoinject\r\nexport class TopNav {\r\n\r\n constructor(\r\n private _dialogSvc: DialogService,\r\n private _url: UrlService = new UrlService(),\r\n public sd: SessionData\r\n ) { \r\n }\r\n\r\n attached() {\r\n if (this.sd.region == null) {\r\n\r\n // Ensure that the user starts here, regardless of the url they entered\r\n // (in other words, do not allow them to start at the project-schedule with no products added)\r\n this.navigateHome();\r\n\r\n // Force / prompt user to select a region\r\n this._dialogSvc.open({\r\n viewModel: RegionsDialog\r\n });\r\n }\r\n }\r\n\r\n navigateHome() {\r\n var url = this._url.build('~/product-selector');\r\n this.router.navigate(url);\r\n }\r\n \r\n @bindable router: Router = null;\r\n}\r\n",null,null]}