{"version":3,"file":"assets/chunk.f97cca84667993296f1d.js","mappings":"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","sources":["./components/home/noise-sensor-threshold/index.hbs","./components/home/noise-sensor-threshold/index.ts","./components/modals/app/checkbox-dialog/index.hbs","./components/modals/app/checkbox-dialog/index.ts","./components/settings/managed-account-access-page/index.hbs","./components/settings/managed-account-access-page/index.ts","./components/settings/restricted-access-settings/group-toggle-table/index.hbs","./components/settings/restricted-access-settings/group-toggle-table/index.ts","./components/settings/restricted-access-settings/index.hbs","./components/settings/restricted-access-settings/index.ts","./settings/noise-settings/controller.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{!-- Add a separator line on the top of the section if this is not the first threshold. --}}\\n {{#unless (eq this.thresholdNumber 1)}}\\n
\\n
\\n
\\n {{/unless}}\\n
\\n \\n
\\n\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n {{#if this.isScheduleOptionSelected }}\\n \\n \\n \\n\\n \\n \\n \\n {{/if}}\\n\\n {{!-- We shouldn\\'t show the delete threshold button if this is the first threshold --}}\\n {{#if this.canDeleteThreshold}}\\n \\n \\n \\n {{/if}}\\n
\",{ moduleName: \"customer-site/components/home/noise-sensor-threshold/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { fnEmpty } from 'customer-site/utils/ember';\nimport { intlPath } from '@adc/i18n/path';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\nimport { minutesToDate } from '../../../utils/datetime';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type { SegmentedTimeModel } from '@adc/ui-components/components/segmented-time-picker';\nimport type SensorThreshold from 'customer-site/models/devices/sensor-threshold';\n\ninterface NoiseSensorThresholdArgs {\n threshold: SensorThreshold;\n thresholdNumber: number;\n thresholdCount: number;\n deleteThresholdSection: (threshold: SensorThreshold) => void;\n}\n\n/**\n * Converts the minutes from midnight into a Time Model.\n *\n * @function\n */\nexport function getTimeModelFromMinutes(minutesFromMidnight: number): SegmentedTimeModel {\n const timeDate = minutesToDate(minutesFromMidnight);\n\n return {\n hour: timeDate.getHours(),\n min: timeDate.getMinutes()\n };\n}\n\n/**\n * @classdesc\n * Component for displaying and getting input for the Noise Sensor Threshold Component.\n */\n@intlPath({ path: 'home/noise-sensor-threshold' })\nexport default class NoiseSensorThresholdComponent extends Component {\n @service declare intl: ADCIntlService;\n\n /** @override */\n constructor(owner: unknown, args: NoiseSensorThresholdArgs) {\n super(owner, args);\n\n ['threshold', 'thresholdNumber', 'thresholdCount', 'deleteThresholdSection'].forEach(\n (name: keyof NoiseSensorThresholdArgs) => {\n assert(`The ${name} parameter must be passed to the noise-sensor-threshold component`, args[name]);\n }\n );\n }\n\n /**\n * The index for this threshold in the noise sensor's threshold list + 1.\n */\n @alias('args.thresholdNumber')\n declare thresholdNumber: number;\n\n /**\n * The name for this threshold.\n */\n @alias('args.threshold.thresholdName')\n name: string | undefined;\n\n /**\n * The value (in decibels) for the threshold.\n */\n @alias('args.threshold.thresholdHigh')\n decibelThreshold: number | undefined;\n\n /**\n * The duration (in minutes) that the persistent sound should be above the threshold for.\n */\n @alias('args.threshold.durationInMinutes')\n noiseDuration: number | undefined;\n\n /**\n * The function passed in to delete this threshold (if necessary).\n */\n get deleteThresholdSection(): (threshold: SensorThreshold) => void {\n return this.args.deleteThresholdSection ?? fnEmpty;\n }\n\n /**\n * Default threshold start time value. Used to denote 12:00 AM.\n */\n defaultBeginMinutes = 0;\n\n /**\n * Default threshold end time value. Used to denote 11:59 PM.\n */\n defaultEndMinutes = 1439;\n\n /**\n * Whether the schedule option in the time frame is selected.\n */\n @tracked\n isScheduleOptionSelected =\n this.args.threshold.startTime !== this.defaultBeginMinutes ||\n this.args.threshold.endTime !== this.defaultEndMinutes;\n\n /**\n * The preset options for the time-frame dropdown.\n */\n staticTimeFrameOptions = ['atAllTimes', 'schedule'];\n\n /**\n * If the threshold can be deleted\n */\n @computed('args.thresholdCount')\n get canDeleteThreshold(): boolean {\n return this.args.thresholdCount > 1;\n }\n\n /**\n * Converts the threshold's startTime into a date object.\n */\n @computed('args.threshold.startTime')\n get startTimeAsDate(): SegmentedTimeModel {\n return getTimeModelFromMinutes(this.args.threshold.startTime);\n }\n\n /**\n * Converts the threshold's endTime into a date object.\n */\n @computed('args.threshold.endTime')\n get endTimeAsDate(): SegmentedTimeModel {\n return getTimeModelFromMinutes(this.args.threshold.endTime);\n }\n\n /**\n * The decibel level selections that, if exceeded, will alert the end-user.\n * Measured in decibels.\n */\n @computed('decibelThreshold')\n get decibelLevelOptions(): number[] {\n const options = [60, 65, 70, 75, 80, 85, 90],\n { decibelThreshold } = this;\n\n return this.createOptions(options, decibelThreshold);\n }\n\n /**\n * The duration (in minutes) of how long the noise has to be above the decibel level\n * selection before alerting the end-user.\n */\n @computed('noiseDuration')\n get durationOptions(): number[] {\n const options = [3, 6, 9, 12, 15, 18, 21],\n { noiseDuration } = this;\n\n return this.createOptions(options, noiseDuration);\n }\n\n /**\n * The decibel level dropdown options, with the threshold's decibel level selected.\n */\n @computed('decibelThreshold')\n get decibelLevelDropdownOptions(): DropdownSelectItem[] {\n const { decibelLevelOptions, decibelThreshold, intl } = this;\n\n return decibelLevelOptions.map((decibelLevel) =>\n DropdownSelectItem.create({\n name: intl.tc(this, 'decibels', { num: decibelLevel }),\n value: decibelLevel.toString(),\n state: decibelThreshold === decibelLevel ? SELECTED : UNSELECTED\n })\n );\n }\n\n /**\n * The duration dropdown options, with the threshold's duration selected.\n */\n @computed('noiseDuration')\n get durationDropdownOptions(): DropdownSelectItem[] {\n const { durationOptions, noiseDuration, intl } = this;\n\n return durationOptions.map((duration) =>\n DropdownSelectItem.create({\n name: intl.t('generic.minutes', { num: duration }),\n value: duration.toString(),\n state: noiseDuration === duration ? SELECTED : UNSELECTED\n })\n );\n }\n\n /**\n * The time frame dropdown options, with the threshold's duration selected.\n */\n @computed('isScheduleOptionSelected', 'staticTimeFrameOptions')\n get timeFrameOptions(): DropdownSelectItem[] {\n const { isScheduleOptionSelected, staticTimeFrameOptions } = this,\n selectedValue = isScheduleOptionSelected ? staticTimeFrameOptions[1] : staticTimeFrameOptions[0];\n\n return staticTimeFrameOptions.map((timeFrame) =>\n DropdownSelectItem.create({\n name: this.getText(timeFrame),\n value: timeFrame,\n state: timeFrame === selectedValue ? SELECTED : UNSELECTED\n })\n );\n }\n\n /**\n * Updates the threshold's decibel threshold.\n */\n @action\n updateNoiseLevelThreshold(decibelThreshold: string): void {\n this.args.threshold.thresholdHigh = Number(decibelThreshold);\n }\n\n /**\n * Updates the threshold's name.\n */\n @action\n updateName(name: string): void {\n this.args.threshold.thresholdName = name;\n }\n\n /**\n * Updates the threshold's noise duration.\n */\n @action\n updateNoiseDuration(duration: string): void {\n this.args.threshold.durationInMinutes = Number(duration);\n }\n\n /**\n * Shows/hides the start and end time drop-down depending on the selected option, as well as updates their values.\n */\n @action\n updateTimeFrame(option: string): void {\n const { args, defaultBeginMinutes, defaultEndMinutes } = this;\n this.isScheduleOptionSelected = option === this.staticTimeFrameOptions[1];\n\n // The endTime when \"At All Times\" is selected should be 1439(11:59 PM) but if \"Schedule\" is selected, it should be 1380(11:00 PM).\n const endTimeOffset = 59;\n args.threshold.startTime = defaultBeginMinutes;\n args.threshold.endTime = !this.isScheduleOptionSelected ? defaultEndMinutes : defaultEndMinutes - endTimeOffset;\n }\n\n /**\n * Updates the threshold's start time.\n */\n @action\n updateStartTime(value: SegmentedTimeModel): void {\n this.args.threshold.startTime = value.min + value.hour * 60;\n }\n\n /**\n * Updates the threshold's end time.\n */\n @action\n updateEndTime(value: SegmentedTimeModel): void {\n this.args.threshold.endTime = value.min + value.hour * 60;\n }\n\n /**\n * Deletes this threshold from the noise sensor's threshold list.\n */\n @action\n deleteThreshold(): void {\n this.deleteThresholdSection(this.args.threshold);\n }\n\n /**\n * Helper function to create the array of numbers that will be used to populate dropdowns.\n *\n * @function\n */\n private createOptions(options: number[], selectedValue: number | undefined): number[] {\n return [...options, selectedValue !== undefined && !options.includes(selectedValue) ? selectedValue : undefined]\n .filter((n) => n != undefined)\n .sort() as number[];\n }\n\n /**\n * Helper function that gets the translated string.\n *\n * @function\n */\n private getText(key: string): string {\n return this.intl.tc(this, key);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Home::NoiseSensorThreshold': typeof NoiseSensorThresholdComponent;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n
\\n {{!-- @glint-expect-error topText can be undefined, so we either need to change that, or make sure it exists before we use it. --}}\\n

{{html-safe @model.topText}}

\\n \\n \\n
\\n\",{ moduleName: \"customer-site/components/modals/app/checkbox-dialog/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nimport './_style.scss';\nimport type { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\ninterface CheckboxModalArgs {\n model: CheckboxModalModel;\n}\n\ninterface CheckboxModalModel {\n title: string;\n css?: string;\n topText?: string;\n disableFooterClose?: boolean;\n footerCloseText?: string;\n checkboxItems: BinaryListItem[];\n valueChange: (items: BinaryListItem[]) => any;\n}\n\n/**\n * @classdesc\n * Modal for rendering a checkbox group\n */\nexport default class CheckboxModal extends Component {\n /**\n * Select all items in the checkbox group\n */\n @action\n selectAll(): void {\n const { checkboxItems, valueChange } = this.args.model;\n checkboxItems.setEach('state', true);\n\n valueChange(checkboxItems);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Modals::App::CheckboxDialog': typeof CheckboxModal;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n <:default as |data|>\\n {{#if data.isRequestForParentScope}}\\n
\\n \\n
\\n {{/if}}\\n\\n {{#if data.excludedRolesHtml}}\\n
\\n
\\n {{data.excludedRolesHtmlSafe}}\\n
\\n
\\n {{/if}}\\n\\n {{#if data.canChangeSettings}}\\n
\\n \\n
\\n
{{tc this (if (is-enterprise) \\'changeAccessLevelGroupDesc\\' \\'changeAccessLevelSystemDesc\\') dealerName=data.dealerName}}
\\n

{{tc this \\'excludeFeaturesHeader\\'}}

\\n \\n <:label as |item|>\\n {{item.label}}\\n \\n \\n \\n {{#if this.showLoginManagementWarning}}\\n \\n {{/if}}\\n
\\n
\\n\\n
\\n \\n
\\n {{tc this \\'optOutExplanation\\' dealerName=data.dealerName systemOrSystemGroup=this.scopeSpecificTextObject.operatingScope}}\\n
\\n
\\n {{/if}}\\n\\n
\\n \\n\\n {{#if data.canChangeSettings}}\\n \\n {{/if}}\\n
\\n {{#if data.canChangeSettings}}\\n
\\n \\n
\\n {{/if}}\\n \\n\",{ moduleName: \"customer-site/components/settings/managed-account-access-page/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed } from '@ember/object';\nimport { and } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport ENV from 'customer-site/config/environment';\nimport { EmberGroupSettings, EmberSettings } from 'customer-site/enums/CustomerPageUrl';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type ManagedAccessRequest from 'customer-site/models/settings/managed-access-request';\n\nexport const managedAccessOptions: {\n id: number;\n n: 'excludeArming' | 'excludeVideoAndImages' | 'excludeUserCodes' | 'excludeLoginManagement';\n r: string;\n t: string;\n}[] = [\n {\n id: 1,\n n: 'excludeArming',\n r: 'armingDesc',\n t: 'armingTooltip'\n },\n {\n id: 2,\n n: 'excludeVideoAndImages',\n r: 'videoDesc',\n t: 'videoTooltip'\n },\n {\n id: 3,\n n: 'excludeUserCodes',\n r: 'userCodesDesc',\n t: 'userCodesTooltip'\n },\n {\n id: 4,\n n: 'excludeLoginManagement',\n r: 'loginManagementDesc',\n t: 'loginManagementTooltip'\n }\n];\n\nexport interface ManagedAccountAccessPageSignature {\n Args: {\n /** Promise for the managed access request for this page. */\n managedAccessRequestPromise: ADCAsyncStoreQueryRecord;\n };\n}\n\n/**\n * @classdesc\n * Component to display managed account access settings\n */\n@intlPath({ path: 'settings/managed-account-access-page' })\nexport default class ManagedAccountAccessPage extends Component {\n @service declare contextManager: ServiceRegistry['context-manager'];\n @service declare identityManager: ServiceRegistry['identity-manager'];\n @service declare notificationManager: ServiceRegistry['notification-manager'];\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare modals: ServiceRegistry['modals'];\n\n /**\n * Model for the managed 24/7 access request\n */\n @tracked\n managedAccessRequest?: ManagedAccessRequest;\n\n /**\n * Login Management option is disabled by default.\n * Should the default disabled setting be overridden?\n * Only override when customers have previously included Login Management feature for 24/7.\n */\n @tracked\n overrideDisableOption = false;\n\n /**\n * Get object with text specific to the scope.\n */\n @computed('identityManager.isEnterprise', 'managedAccessRequest.isRequestForParentScope')\n get scopeSpecificTextObject(): { adminType: string; operatingScope: string } {\n const { intl } = this,\n { isEnterprise } = this.identityManager;\n\n return {\n adminType: intl.t(\n isEnterprise || this.managedAccessRequest?.isRequestForParentScope\n ? 'generic.systemGroupAdministrators'\n : 'generic.primaryLogins'\n ),\n operatingScope: intl.t(isEnterprise ? 'generic.enterpriseGroup' : 'generic.system')\n };\n }\n\n /**\n * Can we save the settings?\n */\n @and('managedAccessRequest.canChangeSettings', 'managedAccessRequest.hasDirtyAttributes')\n declare canBeSaved: boolean;\n\n /**\n * List of checkboxes for the list of settings\n */\n @computed(\n 'managedAccessRequest.{excludeArming,excludeLoginManagement,excludeUserCodes,excludeVideoAndImages}',\n 'overrideDisableOption'\n )\n get accessLevelOptions(): BinaryListItem<{ id: number; tooltip: string }>[] {\n const { intl } = this;\n return managedAccessOptions.map(({ id, r, n, t }) => {\n const state = !!this.managedAccessRequest?.[n];\n\n return new BinaryListItem({\n label: intl.tc(this, r),\n state,\n disabled: n === 'excludeLoginManagement' && !this.overrideDisableOption && state,\n props: {\n id,\n tooltip: intl.tc(this, t)\n }\n });\n });\n }\n\n /**\n * Should we show the warning about including Login Management but excluding other permissions?\n */\n @computed('managedAccessRequest.{excludeArming,excludeVideoAndImages,excludeUserCodes,excludeLoginManagement}')\n get showLoginManagementWarning(): boolean {\n const { excludeArming, excludeVideoAndImages, excludeUserCodes, excludeLoginManagement } =\n this.managedAccessRequest ?? {};\n\n return !!(!excludeLoginManagement && (excludeArming || excludeVideoAndImages || excludeUserCodes));\n }\n\n /**\n * Updates the options on the model when the checkbox inputs are changed.\n */\n @action changedAccessLevelOptions(items: ManagedAccountAccessPage['accessLevelOptions']): void {\n const { managedAccessRequest } = this;\n if (!managedAccessRequest) {\n return;\n }\n\n managedAccessOptions.forEach(({ id, n }) => {\n const newValue = items.find((i) => i.props.id === id)?.state ?? false;\n\n // If the \"exclude login management\" option is going from false -> true, allow the customer to\n // enable/disable before saving. This is to allow customers who previously had this feature to continue\n // having their existing behavior. But going forward, we will be disabling this option by default till Legal approves.\n if (n === 'excludeLoginManagement' && !managedAccessRequest[n] && newValue) {\n this.overrideDisableOption = true;\n }\n\n managedAccessRequest[n] = !!newValue;\n });\n }\n\n /**\n * Save the managed access settings.\n */\n @action async saveSettings(): Promise {\n const { managedAccessRequest } = this;\n if (managedAccessRequest) {\n await managedAccessRequest.save();\n this.notificationManager.addSuccess(this.intl.tc(this, 'updateManagedAccessSuccess'));\n // Once saved, login management option can't be changed and can't be overridden\n this.overrideDisableOption = false;\n }\n }\n\n /**\n * Shows the information dialog with the indicated full terms and conditions.\n */\n @action showFullTerms(): void {\n const { managedAccessRequest } = this;\n if (managedAccessRequest) {\n this.modals.showInfoModal({\n title: managedAccessRequest.agreementHeader,\n css: 'modal-lg',\n info: htmlSafe(managedAccessRequest.agreementText),\n disableFooterClose: false\n });\n }\n }\n\n /**\n * Opt out of managed account access.\n */\n @action optOut(): void {\n const { intl } = this;\n\n this.modals.showConfirmationDialog(intl.tc(this, 'optOutManagedAccess'), intl.tc(this, 'confirmOptOut'), {\n text: intl.t('generic.optOut'),\n css: 'btn-color-danger',\n action: async (buttonAnimation: Promise) => {\n await this.managedAccessRequest?.destroyRecord();\n this.notificationManager.addSuccess(intl.tc(this, 'optOutSuccess'));\n\n buttonAnimation.then(async () => {\n const { identityManager } = this;\n await this.contextManager.replaceRouteWithNativeRoute(\n identityManager.isEnterprise ? EmberGroupSettings : EmberSettings\n );\n\n if (ENV.environment !== 'test') {\n // We need to refresh the app so that the managed access settings option doesn't show up anymore.\n // Unfortunately this seems to cause integration tests to restart, so just skip it if\n // we're running them.\n identityManager.refreshApplication(true, false);\n }\n });\n }\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Settings::ManagedAccountAccessPage': typeof ManagedAccountAccessPage;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"

{{@title}}

\\n\\n \\n

{{cell.row.scopeName}}

\\n
\\n \\n \\n {{#if cell.row.disabled }}\\n \\n {{cell.row.disabledMessage}}\\n \\n {{/if}}\\n \\n
\",{ moduleName: \"customer-site/components/settings/restricted-access-settings/group-toggle-table/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport type { RestrictedAccessToggleItem } from '../index';\n\ninterface SettingsRestrictedAccessSettingsGroupToggleTableSignature {\n Args: {\n toggleItems: RestrictedAccessToggleItem[];\n tableIndex: number;\n title?: string;\n };\n}\n\nconst SettingsRestrictedAccessSettingsGroupToggleTable =\n templateOnlyComponent();\nexport default SettingsRestrictedAccessSettingsGroupToggleTable;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Settings::RestrictedAccessSettings::GroupToggleTable': typeof SettingsRestrictedAccessSettingsGroupToggleTable;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n <:default as |PageViewContainer api|>\\n \\n <:loading as |PageViewLoading|>\\n \\n \\n\\n <:default as |data|>\\n

{{t \\'settings.access-control-restricted-access.title\\'}}

\\n
\\n
\\n

{{t \\'settings.access-control-restricted-access.restrictedAccessEnabledSummary\\' htmlSafe=true}}

\\n

{{t \\'settings.access-control-restricted-access.restrictedAccessDisabledSummary\\' htmlSafe=true}}

\\n

{{this.restrictedAccessSummaryText}}

\\n \\n
\\n\\n
\\n

{{t \\'settings.access-control-restricted-access.defaultAllAccessAccessPlan\\'}}

\\n

{{t \\'settings.access-control-restricted-access.additionalAccessPlans\\'}}

\\n {{#if (media \\'isMobile\\')}}\\n \\n {{/if}}\\n {{!-- @glint-expect-error types for selectedAccessPlans and openCheckboxModal don\\'t match, please fix. --}}\\n \\n {{#if this.identityManager.isEnterprise}}\\n
\\n

{{t \\'enterprise.settings.access-control-restricted-access.toggleSubUnits\\'}}

\\n {{/if}}\\n {{#if this.restrictedAccessToggle}}\\n {{#if this.isParentGroupContext}}\\n {{#each this.restrictedAccessToggle.childToggles as |subGroupSetting tableIndex| }}\\n \\n {{/each}}\\n {{else}}\\n \\n {{/if}}\\n {{/if}}\\n\\n {{#if this.hasMultiplePartitions}}\\n
\\n
\\n

{{t \\'settings.access-control-restricted-access.changePrimaryPartition\\' htmlSafe=true}}

\\n \\n
\\n {{/if}}\\n
\\n
\\n \\n
\\n \\n\\n <:error as |PageViewError|>\\n \\n \\n\\n
\\n \\n\",{ moduleName: \"customer-site/components/settings/restricted-access-settings/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/object';\nimport { action, computed, set } from '@ember/object';\nimport { reads } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { task } from 'ember-concurrency';\nimport CheckboxModal from 'customer-site/components/modals/app/checkbox-dialog/index';\nimport {\n EmberGroupSettings,\n EmberMultiGroupSettings,\n EmberRules,\n EmberSettings\n} from 'customer-site/enums/CustomerPageUrl';\nimport { RestrictedAccessOperatingMode } from 'customer-site/enums/MercuryControllerOperatingMode';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\n\nimport type { SafeString } from 'handlebars';\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type AccessControlAccessPlanModel from 'customer-site/models/access-control/access-control-access-plan';\nimport type RestrictedAccessSetting from 'customer-site/models/settings/restricted-access-setting';\nimport type { RestrictedAccessSettingsRouteModel } from 'customer-site/settings/access-control-restricted-access/route';\nimport type { ResolvedObject } from 'customer-site/utils/type-utils';\n\nconst PRIMARY_PARTITION_UNSET = -1;\nconst RESOURCE_ROOT = 'settings.access-control-restricted-access.';\nconst ENTERPRISE_RESOURCE_ROOT = 'enterprise.' + RESOURCE_ROOT;\n\ninterface SettingsRestrictedAccessSettingsComponentSignature {\n Args: {\n model: RestrictedAccessSettingsRouteModel;\n };\n}\n\ninterface AccessPlanSelection {\n model: AccessControlAccessPlanModel;\n isSelected: boolean;\n}\n\nexport interface RestrictedAccessToggleItem\n extends Pick {\n model: RestrictedAccessSetting;\n disabled: boolean;\n isTooltipVisible: boolean;\n childToggles: RestrictedAccessToggleItem[];\n}\n\nexport default class SettingsRestrictedAccessSettingsComponent extends Component {\n @service declare identityManager: ServiceRegistry['identity-manager'];\n @service declare notificationManager: ServiceRegistry['notification-manager'];\n @service declare modals: ServiceRegistry['modals'];\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare router: ServiceRegistry['router'];\n @service declare navigation: ServiceRegistry['navigation'];\n\n resolvedModel?: ResolvedObject;\n\n @reads('identityManager.identityModel.viewingParentGroup')\n declare isParentGroupContext: boolean;\n\n /**\n * The primary partition id selected in the dropdown list.\n */\n @tracked selectedPrimaryPartitionId = PRIMARY_PARTITION_UNSET;\n\n @tracked restrictedAccessToggle?: RestrictedAccessToggleItem;\n\n @tracked accessPlanSelections: AccessPlanSelection[] = [];\n\n /**\n * The current value of the restricted access toggle\n */\n @computed('restrictedAccessToggle.enabled')\n get toggleValue(): boolean {\n return this.restrictedAccessToggle?.enabled ?? false;\n }\n\n /**\n * The current access plans selected from the modal. Passed to the Access\n * Plan List View component.\n */\n @computed('accessPlanSelections.@each.isSelected')\n get selectedAccessPlans(): AccessControlAccessPlanModel[] {\n return this.accessPlanSelections.filter((item) => get(item, 'isSelected')).map((ap) => ap.model);\n }\n /**\n * Has the restricted access toggle been changed?\n */\n @computed('restrictedAccessToggle.{enabled,model.enabled}')\n get restrictedAccessEnabledChanged(): boolean {\n return this.restrictedAccessToggle?.enabled !== this.restrictedAccessToggle?.model.enabled;\n }\n\n /**\n * Has the primary partition been changed?\n */\n @computed('resolvedModel.system.primaryPartitionId', 'selectedPrimaryPartitionId')\n get primaryPartitionChanged(): boolean {\n return (\n this.selectedPrimaryPartitionId !==\n (this.resolvedModel?.system?.primaryPartitionId ?? PRIMARY_PARTITION_UNSET)\n );\n }\n\n @computed('resolvedModel.partitions.length')\n get hasMultiplePartitions(): boolean {\n return (this.resolvedModel?.partitions?.length ?? -1) > 1;\n }\n\n /**\n * The drop down for selecting a primary partition.\n */\n @computed('resolvedModel.{partitions,system.primaryPartitionId}')\n get partitionDropdownItems(): DropdownSelectItem[] {\n const { partitions, system } = this.resolvedModel || {},\n primaryPartitionId = system?.primaryPartitionId ?? PRIMARY_PARTITION_UNSET;\n\n return (\n partitions?.map(({ description, partitionId }) =>\n DropdownSelectItem.create({\n name: description,\n value: String(partitionId),\n // Device Ids for partitions start at 127, so we add 126 to the partition ID (starts at 1).\n state: partitionId + 126 == primaryPartitionId ? SELECTED : UNSELECTED\n })\n ) ?? []\n );\n }\n\n @computed('accessPlanSelections.@each.{isSelected,model}')\n get accessPlanCheckboxItems(): BinaryListItem<{ accessPlan: AccessPlanSelection }>[] {\n return this.accessPlanSelections.map((ap) => {\n return new BinaryListItem({\n label: ap.model.name,\n state: ap.isSelected,\n disabled: ap.model.isAllAccess || ap.model.isPersonalAccessPlan,\n props: { accessPlan: ap }\n });\n });\n }\n\n get restrictedAccessEnableText(): string {\n const { intl } = this;\n return this.identityManager.isEnterprise\n ? intl.t(ENTERPRISE_RESOURCE_ROOT + 'enableRestrictedAccessSettings')\n : intl.t(RESOURCE_ROOT + 'enableRestrictedAccessSettings');\n }\n\n get restrictedAccessSummaryText(): SafeString | string {\n const { intl } = this;\n const hyperlink = this.navigation.getRouteItem(EmberRules);\n return !this.identityManager.isEnterprise && !!hyperlink\n ? htmlSafe(\n intl.t(RESOURCE_ROOT + 'restrictedAccessSettingsSummary', {\n link: this.router.urlFor(hyperlink.url)\n })\n )\n : intl.t(ENTERPRISE_RESOURCE_ROOT + 'restrictedAccessSettingsSummary');\n }\n\n @action\n dataLoaded(model: ResolvedObject): void {\n const { restrictedAccessSetting, accessPlans, system } = model;\n\n set(this, 'resolvedModel', model);\n\n // initialize tracked values for toggle and dropdown\n this.accessPlanSelections = this.createAccessPlanListItems(accessPlans);\n this.loadNestedSettings.perform(restrictedAccessSetting);\n this.selectedPrimaryPartitionId = system?.primaryPartitionId ?? PRIMARY_PARTITION_UNSET;\n }\n\n loadNestedSettings = task({ restartable: true }, async (restrictedAccessSetting: RestrictedAccessSetting) => {\n this.restrictedAccessToggle = await this.createSettingToggle(restrictedAccessSetting);\n if (this.isParentGroupContext) {\n // Remove any sub-group toggles without any units\n this.restrictedAccessToggle.childToggles = this.restrictedAccessToggle.childToggles.filter(\n (toggle) => toggle.childToggles.length > 0\n );\n }\n });\n\n @action async saveRestrictedAccessSettings(): Promise {\n const { restrictedAccessToggle } = this;\n\n if (restrictedAccessToggle) {\n try {\n await this.saveRestrictedAccessSetting(restrictedAccessToggle);\n\n // Save primary partition settings and access plan settings if\n // enable/disable RA was successful\n const primaryPartitionUpdated = this.primaryPartitionChanged\n ? this.savePrimaryPartitionId(this.selectedPrimaryPartitionId)\n : Promise.resolve();\n\n await Promise.all([\n this.accessPlanSelections.map((ap) => this.saveOperatingModes(ap)),\n primaryPartitionUpdated\n ]);\n } catch {\n return Promise.reject();\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Sets the local 'selectedPrimaryPartitionId' value which will be saved upon calling\n * 'savePrimaryPartitionid'\n *\n * @param partitionIdString string partition ID passed from the dropdown. Will\n * be converted to a number before setting the local value.\n */\n @action\n setSelectedPrimaryPartitionId(partitionIdString: string): void {\n this.selectedPrimaryPartitionId = Number(partitionIdString);\n }\n\n @action\n toggleChange(event: Event & { target: HTMLInputElement }): void {\n const { restrictedAccessToggle, accessPlanSelections } = this,\n toggled = event.target.checked;\n\n if (restrictedAccessToggle) {\n set(restrictedAccessToggle, 'enabled', toggled);\n }\n\n if (toggled) {\n // Auto select the all access access plan(s)\n const allAccessAccessPlans = accessPlanSelections.filter((item) => item.model.isAllAccess);\n allAccessAccessPlans.forEach((item) => set(item, 'isSelected', true));\n } else {\n // Deselect all access plans\n accessPlanSelections.forEach((item) => set(item, 'isSelected', false));\n }\n }\n\n /**\n * Action called after the modal is closed, will update the selected RA access plans\n * with the new selection.\n *\n * @param accessPlans access plan checkbox items from the modal\n */\n @action\n setAccessPlans(accessPlans: SettingsRestrictedAccessSettingsComponent['accessPlanCheckboxItems']): void {\n this.accessPlanSelections = accessPlans.map((item) => {\n return {\n model: item.props.accessPlan.model,\n isSelected: Boolean(item.state)\n };\n });\n }\n\n /**\n * Open the checkbox modal\n */\n @action\n openCheckboxModal(): void {\n this.modals.showModal(CheckboxModal, {\n title: this.intl.t(RESOURCE_ROOT + 'modalTitle'),\n checkboxItems: this.accessPlanCheckboxItems,\n valueChange: this.setAccessPlans\n });\n }\n\n @action\n cancelAction(): void {\n const { navigation } = this;\n // Return to settings page\n if (this.isParentGroupContext) {\n navigation.transitionToRouteId(EmberMultiGroupSettings);\n return;\n }\n\n if (this.identityManager.isEnterprise) {\n navigation.transitionToRouteId(EmberGroupSettings);\n return;\n }\n\n navigation.transitionToRouteId(EmberSettings);\n }\n\n /**\n * Calls the system model's 'updatePrimaryPartition' API function to update the primary partition ID. Should only be called\n * for single system, not for an enterprise group.\n *\n * @note Will save the device ID of the given partition, which is partitionID + 126\n */\n savePrimaryPartitionId(partitionId: number): Promise {\n // Device Ids for partitions start at 127, so we add 126 to the partition ID (starts at 1).\n return this.resolvedModel?.system?.updatePrimaryPartition(partitionId + 126) ?? Promise.resolve();\n }\n\n /**\n * Saves an access plan model if it has had its operating modes updated.\n */\n async saveOperatingModes(accessPlan: AccessPlanSelection): Promise {\n const modelHasRestrictedAccessOperatingMode =\n accessPlan.model.operatingModes.includes(RestrictedAccessOperatingMode);\n\n if (modelHasRestrictedAccessOperatingMode && !accessPlan.isSelected) {\n // Remove operating mode from the model\n accessPlan.model.operatingModes = accessPlan.model.operatingModes.filter(\n (om) => om !== RestrictedAccessOperatingMode\n );\n return await accessPlan.model.save();\n }\n\n if (!modelHasRestrictedAccessOperatingMode && accessPlan.isSelected) {\n // Add operating mode to the model\n accessPlan.model.operatingModes.push(RestrictedAccessOperatingMode);\n return await accessPlan.model.save();\n }\n }\n\n async saveRestrictedAccessSetting(setting: RestrictedAccessToggleItem): Promise {\n const subUnitSettings = !this.isParentGroupContext\n ? setting.childToggles\n : setting.childToggles.map((setting) => setting.childToggles).flat();\n\n // If we're on an enterprise group scope, but no sub-units are selected to enable restricted access, throw error\n if (\n setting.enabled &&\n this.identityManager.isEnterprise &&\n !subUnitSettings.any((setting) => setting.enabled)\n ) {\n this.notificationManager.addError(this.intl.t(ENTERPRISE_RESOURCE_ROOT + 'errorSubUnit'));\n return Promise.reject();\n }\n\n const subUnitSettingsWithPendingChanges = subUnitSettings.filter(\n (subSetting) => subSetting.enabled !== subSetting.model.enabled\n );\n\n // Update the model attributes for each\n subUnitSettingsWithPendingChanges.forEach((subSetting) => set(subSetting.model, 'enabled', subSetting.enabled));\n\n // Save sub units first, then save the settings for current scope\n await Promise.all(subUnitSettingsWithPendingChanges.map((subSetting) => subSetting.model.save())).catch(() => {\n // Rollback model changes on save fail for any of the models\n subUnitSettingsWithPendingChanges.forEach((subSetting) => subSetting.model.rollbackAttributes());\n return Promise.reject();\n });\n\n if (this.restrictedAccessEnabledChanged) {\n // Update the main settings\n set(setting.model, 'enabled', setting.enabled);\n\n try {\n return await setting.model.save();\n } catch {\n setting.model.rollbackAttributes();\n }\n }\n }\n\n async createSettingToggle(\n settingModel: ResolvedObject<\n SettingsRestrictedAccessSettingsComponentSignature['Args']['model']\n >['restrictedAccessSetting']\n ): Promise {\n const { scopeName, enabled, disabledMessage = '' } = settingModel;\n\n const toggleItem: RestrictedAccessToggleItem = {\n scopeName,\n enabled,\n disabledMessage,\n isTooltipVisible: false,\n disabled: disabledMessage.length > 0,\n model: settingModel,\n childToggles: []\n };\n\n // Create child toggles\n if (settingModel.childSettings) {\n await settingModel.childSettings;\n toggleItem.childToggles = await Promise.all(\n settingModel.childSettings.map(async (setting) => await this.createSettingToggle(setting))\n );\n }\n\n return toggleItem;\n }\n\n createAccessPlanListItems(\n accessPlans: ResolvedObject['accessPlans']\n ): AccessPlanSelection[] {\n return accessPlans.map((ap) => {\n return {\n isSelected: ap.operatingModes.includes(RestrictedAccessOperatingMode),\n model: ap\n };\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Settings::RestrictedAccessSettings': typeof SettingsRestrictedAccessSettingsComponent;\n }\n}\n","import { tracked } from '@glimmer/tracking';\nimport EmberController from '@ember/controller';\nimport { action, computed, get } from '@ember/object';\nimport { alias, or } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { EmberNoiseSettings } from 'customer-site/enums/CustomerPageUrl';\nimport { Loudness } from 'customer-site/enums/SensorReadingType';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\nimport { NoiseThresholdExceeded } from '../../enums/CustomerNotificationType';\nimport { NotificationEdit } from '../../enums/CustomerPageUrl';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type NotificationManager from '@adc/ui-components/services/notification-manager';\nimport type Store from '@ember-data/store';\nimport type NoiseSensorModel from 'customer-site/models/devices/noise-sensor';\nimport type SensorThreshold from 'customer-site/models/devices/sensor-threshold';\nimport type ContextManager from 'customer-site/services/context-manager';\n\n/**\n * @classdesc\n *\n * Controller for the Noise Settings page.\n */\nexport default class NoiseSettingsController extends EmberController {\n @service declare intl: ADCIntlService;\n @service declare notificationManager: NotificationManager;\n @service declare store: Store;\n @service declare contextManager: ContextManager;\n @service declare media: ADCResponsiveMediaService;\n\n declare model: any; // Please replace this 'any' with the actual model type!\n\n /**\n * The route to this page.\n */\n noiseSettingsRoute = EmberNoiseSettings;\n\n /**\n * The max amount of thresholds that a noise sensor can have.\n */\n maxThresholdCount = 3;\n\n @alias('contextManager.identityModel.canEditNoiseSensors')\n declare canEditNoiseSensors: boolean;\n\n /**\n * Is the app being served as a webview in a mobile app?\n */\n @or('media.{isMobile,isTablet,isTabletPortrait}', 'contextManager.identityModel.isMobileApp')\n declare isMobileApp: boolean;\n\n /**\n * The noise sensors on this system.\n */\n @alias('model.noiseSensors')\n declare noiseSensors: NoiseSensorModel[];\n\n @computed('sortThresholdsToDisplay', 'selectedNoiseSensor.thresholds.{@each.isDeleted,id,[]}')\n get displayThresholds(): SensorThreshold[] {\n return (this.selectedNoiseSensor?.thresholds?.toArray().sort(this.sortThresholdsToDisplay) ?? []).rejectBy(\n 'isDeleted'\n );\n }\n\n /**\n * The id of the selected noise sensor on the web-page.\n */\n @tracked\n selectedNoiseSensorId?: string;\n\n @computed('maxThresholdCount', 'displayThresholds.[]')\n get disableAddThreshold(): boolean {\n return this.displayThresholds.length >= this.maxThresholdCount;\n }\n\n /**\n * The selected noise sensor object on the web-page.\n */\n @computed('noiseSensors', 'selectedNoiseSensorId')\n get selectedNoiseSensor(): NoiseSensorModel | undefined {\n return this.noiseSensors?.findBy('id', this.selectedNoiseSensorId);\n }\n\n /**\n * Have any of the selected noise sensor settings changed?\n */\n @computed('canEditNoiseSensors', 'displayThresholds.@each.{thresholdHigh,durationInMinutes}')\n get canBeApplied(): boolean {\n if (!this.canEditNoiseSensors) {\n return false;\n }\n\n return this.displayThresholds.every((threshold: SensorThreshold) => {\n return ['thresholdHigh', 'durationInMinutes'].every((n: keyof SensorThreshold) => !!(threshold ?? {})[n]);\n });\n }\n\n /**\n * The noise sensors on this system available to select from the dropdown.\n */\n @computed('selectedNoiseSensorId', 'noiseSensors')\n get noiseSensorDropdownOptions(): DropdownSelectItem[] {\n return (this.noiseSensors ?? []).map((sensor) =>\n DropdownSelectItem.create({\n name: sensor.description,\n value: sensor.id,\n state: this.selectedNoiseSensorId === sensor.id ? SELECTED : UNSELECTED\n })\n );\n }\n\n /**\n * Initially set the selected noise sensor to be the first noise sensor returned from the backend.\n */\n @action\n async dataLoaded(): Promise {\n this.selectedNoiseSensorId = this.model.selectedNoiseSensorId || (await this.noiseSensors)?.firstObject?.id;\n }\n\n /**\n * Transitions to the legacy noise threshold exceeded setting page.\n */\n @action\n transitionToLegacyNoiseThresholdNotificationPage(): void {\n // TODO: This ignore is an existing deprecation that must be refactored, do not copy this usage\n // eslint-disable-next-line @adc/ember/no-context-manager-transition\n this.contextManager.transitionToRouteId(NotificationEdit, {\n search: `?notificationTypeId=${NoiseThresholdExceeded}`\n });\n }\n\n /**\n * Adds the threshold to the selected noise sensor's threshold list.\n */\n @action\n addThreshold(): void {\n if (!this.selectedNoiseSensor) {\n return;\n }\n\n const { store } = this;\n this.selectedNoiseSensor.thresholds.addObject(\n store.createRecord('devices/sensor-threshold', {\n device: this.selectedNoiseSensor,\n sensorReadingType: Loudness\n })\n );\n\n this.scrollToApplyButton();\n }\n\n /**\n * Deletes the threshold from the selected noise sensor's threshold list.\n *\n */\n @action\n deleteThreshold(threshold: SensorThreshold): void {\n // Flag the record as isDeleted. When the save button is clicked, the deletion will be persisted.\n threshold.deleteRecord();\n }\n\n /**\n * Save the selected noise sensor settings.\n */\n @action\n async saveNoiseSensorSettings(): Promise {\n const { notificationManager, selectedNoiseSensor } = this;\n\n if (!selectedNoiseSensor) {\n return Promise.reject();\n }\n\n try {\n const thresholdsToSave = selectedNoiseSensor.thresholds.toArray().sort(this.sortThresholdsToSave);\n await Promise.all(\n thresholdsToSave\n .map((threshold: SensorThreshold) => {\n if (!threshold.isNew && !threshold.isDeleted && !threshold.hasDirtyAttributes) {\n return undefined;\n }\n\n return threshold.save();\n })\n .compact()\n );\n notificationManager.addSuccess(this.getText('noiseSensorSettingsApplied'));\n return Promise.resolve();\n } catch (ex) {\n const errors = ex.errors?.errors ?? [{ detail: this.getText('noiseSensorSettingsFailed') }];\n errors.forEach(function (val: any) {\n if (val.detail) {\n notificationManager.addError(val.detail);\n }\n });\n return Promise.reject();\n }\n }\n\n /**\n * Select a different noise sensor from the device dropdown.\n */\n @action\n selectNoiseSensor(selectedNoiseSensorId: string): void {\n // Clear any updated settings that weren't saved on the selected noise sensor.\n this.selectedNoiseSensor?.rollback();\n\n // Update the selected noise sensor id with the newly selected sensor.\n // TODO: This ignore is an existing deprecation that must be refactored, do not copy this usage\n // eslint-disable-next-line @adc/ember/no-context-manager-transition\n this.contextManager.transitionToRouteId(this.noiseSettingsRoute, undefined, undefined, selectedNoiseSensorId);\n }\n\n /**\n * Sorts the thresholds prior to them getting saved. We want the deleted thresholds first because the backend checks to make\n * sure that the max amount of thresholds per sensor doesn't get passed.\n */\n sortThresholdsToSave(a: SensorThreshold, b: SensorThreshold) {\n if (!get(a, 'isDeleted') && get(b, 'isDeleted')) {\n return 1;\n } else if (a.isDeleted && !b.isDeleted) {\n return -1;\n }\n\n return 0;\n }\n\n /**\n * Sorts the threshold prior to them getting displayed. We want to sort by the thresholds id, and want the new thresholds (null id)\n * at the end of the list.\n */\n sortThresholdsToDisplay(a: SensorThreshold, b: SensorThreshold) {\n if (a.id === null) {\n return 1;\n }\n\n if (b.id === null) {\n return -1;\n }\n\n if (a.id === b.id) {\n return 0;\n }\n\n return a.id < b.id ? -1 : 1;\n }\n\n /**\n * Helper function that gets the translated string.\n *\n * @function\n */\n private getText(key: string): string {\n return this.intl.tc(this, key);\n }\n\n /**\n * Helper function that scrolls down to the apply button.\n *\n * @function\n */\n private scrollToApplyButton(): void {\n const applyButton = document.getElementById('applySettingsButton');\n\n if (applyButton) {\n setTimeout(function () {\n applyButton?.scrollIntoView({ behavior: 'smooth' });\n }, 5);\n }\n }\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'settings/noise-settings': NoiseSettingsController;\n }\n}\n"],"names":["createTemplateFactory","scope","eq_","textInput_","tc_","formGroup_","dropdownSelectSingleSelect_","toString_","segmentedTimePicker_","buttonSimple_","on","getTimeModelFromMinutes","minutesFromMidnight","timeDate","minutesToDate","hour","getHours","min","getMinutes","NoiseSensorThresholdComponent","_dec","intlPath","path","_dec2","alias","_dec3","_dec4","_dec5","_dec6","computed","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_class2","Component","constructor","owner","args","super","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_defineProperty","_descriptor6","forEach","name","deleteThresholdSection","_this$args$deleteThre","this","fnEmpty","canDeleteThreshold","thresholdCount","startTimeAsDate","threshold","startTime","endTimeAsDate","endTime","decibelLevelOptions","decibelThreshold","createOptions","durationOptions","noiseDuration","decibelLevelDropdownOptions","intl","map","decibelLevel","DropdownSelectItem","create","tc","num","value","toString","state","SELECTED","UNSELECTED","durationDropdownOptions","duration","t","timeFrameOptions","isScheduleOptionSelected","staticTimeFrameOptions","selectedValue","timeFrame","getText","updateNoiseLevelThreshold","thresholdHigh","Number","updateName","thresholdName","updateNoiseDuration","durationInMinutes","updateTimeFrame","option","defaultBeginMinutes","defaultEndMinutes","updateStartTime","updateEndTime","deleteThreshold","options","undefined","includes","filter","n","sort","key","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","tracked","Object","getOwnPropertyDescriptor","action","_class","setComponentTemplate","TEMPLATE","modalsDialogModalsSimpleSimpleDialog_","htmlSafe_","t_","simpleBinaryList_","CheckboxModal","selectAll","checkboxItems","valueChange","model","setEach","pageViewDetails_","fn","adcBanner_","fieldsetHeader_","tc_0","isEnterprise_","svgSymbol_","inlineAlert_","buttonAsync_","managedAccessOptions","id","r","ManagedAccountAccessPage","and","arguments","_descriptor7","_descriptor8","scopeSpecificTextObject","_this$managedAccessRe","isEnterprise","identityManager","adminType","managedAccessRequest","isRequestForParentScope","operatingScope","accessLevelOptions","_ref","_this$managedAccessRe2","BinaryListItem","label","disabled","overrideDisableOption","props","tooltip","showLoginManagementWarning","_this$managedAccessRe3","excludeArming","excludeVideoAndImages","excludeUserCodes","excludeLoginManagement","changedAccessLevelOptions","items","_ref2","_items$find$state","_items$find","newValue","find","i","saveSettings","save","notificationManager","addSuccess","showFullTerms","modals","showInfoModal","title","agreementHeader","css","info","htmlSafe","agreementText","disableFooterClose","optOut","showConfirmationDialog","text","async","_this$managedAccessRe4","destroyRecord","buttonAnimation","then","contextManager","replaceRouteWithNativeRoute","EmberGroupSettings","EmberSettings","ENV","environment","refreshApplication","responsiveTable_","simpleBinary_","handleBinaryChange_","noop_","toolTip_","SettingsRestrictedAccessSettingsGroupToggleTable","templateOnlyComponent","pageView_","promiseHashTracked_","media_","not_","t_0","accessControlAccessPlansListAccessPlanListView_","settingsRestrictedAccessSettingsGroupToggleTable_","actionButtons_","RESOURCE_ROOT","ENTERPRISE_RESOURCE_ROOT","SettingsRestrictedAccessSettingsComponent","reads","_descriptor9","_descriptor10","_buildTask","context","generator","restrictedAccessSetting","restrictedAccessToggle","createSettingToggle","isParentGroupContext","childToggles","toggle","length","restartable","toggleValue","_this$restrictedAcces","_this$restrictedAcces2","enabled","selectedAccessPlans","accessPlanSelections","item","get","ap","restrictedAccessEnabledChanged","_this$restrictedAcces3","_this$restrictedAcces4","primaryPartitionChanged","_this$resolvedModel$s","_this$resolvedModel","selectedPrimaryPartitionId","resolvedModel","system","primaryPartitionId","hasMultiplePartitions","_this$resolvedModel$p","_this$resolvedModel2","partitions","partitionDropdownItems","_system$primaryPartit","_partitions$map","description","partitionId","String","accessPlanCheckboxItems","isSelected","isAllAccess","isPersonalAccessPlan","accessPlan","restrictedAccessEnableText","restrictedAccessSummaryText","hyperlink","navigation","getRouteItem","EmberRules","link","router","urlFor","url","dataLoaded","_system$primaryPartit2","accessPlans","set","createAccessPlanListItems","loadNestedSettings","perform","saveRestrictedAccessSettings","saveRestrictedAccessSetting","primaryPartitionUpdated","savePrimaryPartitionId","Promise","resolve","all","saveOperatingModes","_unused","reject","setSelectedPrimaryPartitionId","partitionIdString","toggleChange","event","toggled","target","checked","setAccessPlans","Boolean","openCheckboxModal","showModal","cancelAction","transitionToRouteId","EmberMultiGroupSettings","_this$resolvedModel$s2","_this$resolvedModel3","updatePrimaryPartition","modelHasRestrictedAccessOperatingMode","operatingModes","RestrictedAccessOperatingMode","om","push","setting","subUnitSettings","flat","any","addError","subUnitSettingsWithPendingChanges","subSetting","catch","rollbackAttributes","_unused2","settingModel","scopeName","disabledMessage","toggleItem","isTooltipVisible","childSettings","NoiseSettingsController","or","EmberController","EmberNoiseSettings","displayThresholds","_this$selectedNoiseSe","_this$selectedNoiseSe2","selectedNoiseSensor","thresholds","toArray","sortThresholdsToDisplay","rejectBy","disableAddThreshold","maxThresholdCount","_this$noiseSensors","noiseSensors","findBy","selectedNoiseSensorId","canBeApplied","canEditNoiseSensors","every","noiseSensorDropdownOptions","_this$noiseSensors2","sensor","_await$this$noiseSens","firstObject","transitionToLegacyNoiseThresholdNotificationPage","NotificationEdit","search","concat","NoiseThresholdExceeded","addThreshold","store","addObject","createRecord","device","sensorReadingType","Loudness","scrollToApplyButton","deleteRecord","saveNoiseSensorSettings","thresholdsToSave","sortThresholdsToSave","isNew","isDeleted","hasDirtyAttributes","compact","ex","_ex$errors$errors","_ex$errors","errors","detail","val","selectNoiseSensor","_this$selectedNoiseSe3","rollback","noiseSettingsRoute","a","b","applyButton","document","getElementById","setTimeout","scrollIntoView","behavior"],"sourceRoot":""}