{"version":3,"file":"assets/chunk.08f80e6579d660308fd4.js","mappings":"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","sources":["./commercial/reports/catalog/controller.ts","./commercial/reports/edit/access-history-report/route.js","./commercial/reports/edit/alarms-issues-report/route.ts","./commercial/reports/edit/user-activity-report/route.ts","./commercial/reports/edit/user-summary-report/route.ts","./commercial/reports/edit/video-health-report/route.ts","./commercial/reports/index/controller.ts","./components/commercial/reports/access-history-report-edit/index.hbs","./components/commercial/reports/access-history-report-edit/index.ts","./components/commercial/reports/battery-level-report-edit/index.hbs","./components/commercial/reports/battery-level-report-edit/index.ts","./components/commercial/report-catalog-item-row/index.hbs","./components/commercial/report-catalog-item-row/index.ts","./components/commercial/reports/catalog-page/index.hbs","./components/commercial/reports/catalog-page/index.ts","./components/commercial/report-item-selection/helper-objects/report-item-selection-info.ts","./components/commercial/report-item-selection/helper-objects/report-device-selection-info.ts","./components/commercial/report-item-selection/helper-objects/report-location-selection-info.ts","./components/commercial/report-item-selection/index.hbs","./components/commercial/report-item-selection/index.ts","./components/commercial/reports/alarms-issues-report-edit/index.hbs","./components/commercial/reports/alarms-issues-report-edit/index.ts","./components/commercial/reports/business-activity-analytics/dropdown-items/index.hbs","./components/commercial/reports/business-activity-analytics/dropdown-items/index.ts","./components/commercial/reports/business-activity-analytics/rule-dropdown/index.hbs","./components/commercial/reports/business-activity-analytics/rule-dropdown/index.ts","./components/commercial/reports/business-activity-analytics/rule-group-dropdown/index.hbs","./components/commercial/reports/business-activity-analytics/rule-group-dropdown/index.ts","./components/commercial/reports/business-activity-analytics-report-edit/index.hbs","./components/commercial/reports/business-activity-analytics-report-edit/index.ts","./components/commercial/reports/self-guided-tours-report-edit/index.hbs","./components/commercial/reports/self-guided-tours-report-edit/index.ts","./components/commercial/reports/trouble-condition-details-report-edit/index.hbs","./components/commercial/reports/trouble-condition-details-report-edit/index.ts","./components/commercial/reports/trouble-condition-report-edit/index.hbs","./components/commercial/reports/trouble-condition-report-edit/index.ts","./components/commercial/reports/show-user-attributes/index.hbs","./components/commercial/reports/show-user-attributes/index.ts","./components/commercial/reports/user-activity-report-edit/index.hbs","./components/commercial/reports/user-activity-report-edit/index.ts","./components/commercial/reports/user-summary-report-edit/index.hbs","./components/commercial/reports/user-summary-report-edit/index.ts","./components/commercial/reports/video-health-report-edit/index.hbs","./components/commercial/reports/video-health-report-edit/index.ts","./components/commercial/reports/base-report-edit-selector/index.hbs","./components/commercial/reports/base-report-edit-selector/index.ts","./components/action-sheets/commercial/reports/recipients/index.hbs","./components/action-sheets/commercial/reports/recipients/index.ts","./components/commercial/reports/report-edit-route/index.hbs","./components/commercial/reports/report-edit-route/index.ts","./components/commercial/reports/report-events-dropdown/index.hbs","./components/commercial/reports/report-events-dropdown/index.ts","./components/commercial/report-row/index.hbs","./components/commercial/report-row/index.js","./components/commercial/reports/reports-page/index.hbs","./components/commercial/reports/reports-page/index.ts","./components/enterprise/locations/trouble-issues-wrapper/trouble-issues-inner-display/index.hbs","./components/enterprise/locations/trouble-issues-wrapper/trouble-issues-inner-display/index.ts","./components/enterprise/locations/trouble-issues-wrapper/index.hbs","./components/enterprise/locations/trouble-issues-wrapper/index.ts","./enterprise/reports/edit/battery-level-report/route.ts"],"sourcesContent":["import Controller from '@ember/controller';\nimport { computed, set } from '@ember/object';\nimport { EmberReportEdit } from '../../../enums/CustomerPageUrl';\n\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type BaseReportsCatalogRoute from './base-catalog-route';\n\nexport type ReportCatalogItemParams = {\n reportType?: number;\n newReportRouteId: number;\n};\n\nexport default class ReportsCatalogController extends Controller {\n queryParams = ['reportType'];\n\n declare model: ModelFrom;\n\n newReportRouteId = EmberReportEdit;\n\n /**\n * Enum of the type of report that we're viewing. Back end will filter the available reports to show depending on the enum\n */\n reportType?: number;\n\n /**\n * Returns an object that with all the properties that the reportCatalogItem component will utilize\n */\n @computed('reportType', 'newReportRouteId')\n get reportCatalogItemParams(): ReportCatalogItemParams {\n const { reportType, newReportRouteId } = this;\n return {\n reportType,\n newReportRouteId\n };\n }\n\n /**\n * Reset the reportType query parameters whenever we transition away from the page to prevent any persisting\n */\n resetQueryParams(): void {\n set(this, 'reportType', undefined);\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 'commercial/reports/catalog': ReportsCatalogController;\n }\n}\n","import { set } from '@ember/object';\nimport ExtraDataRoute from 'customer-site/classes/commercial/reports/edit/extra-data-route';\nimport { accessHistoryEventGroups } from 'customer-site/components/commercial/reports/access-history-report-edit/index';\nimport { EmberAccessHistoryReportEdit } from 'customer-site/enums/CustomerPageUrl';\n\n/**\n * @classdesc\n *\n * Route for Access History Report edit page\n *\n * @class commercial.reports.edit.access-history-report.Route\n * @extends ExtraDataRoute\n */\nexport default class Route extends ExtraDataRoute {\n /** @override */\n routeId = EmberAccessHistoryReportEdit;\n\n /** @override */\n extraDataDelegate = (report) => {\n if (report.extraData === '' && report.isNew) {\n let allEventIds = [];\n accessHistoryEventGroups.forEach((group) => (allEventIds = allEventIds.concat(group)));\n set(report, 'eventTypes', [...allEventIds]);\n }\n };\n}\n","import { set } from '@ember/object';\nimport ExtraDataRoute from 'customer-site/classes/commercial/reports/edit/extra-data-route';\nimport { EmberAlarmsIssuesReportEdit } from 'customer-site/enums/CustomerPageUrl';\n\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\n/**\n * @classdesc\n *\n * Route for Alarms & Issues Report edit page\n *\n */\nexport default class Route extends ExtraDataRoute {\n /** @override */\n routeId = EmberAlarmsIssuesReportEdit;\n\n /** @override */\n extraDataDelegate = (report: BaseReport) => {\n const isNewReport = !!report.isNew;\n if (isNewReport) {\n set(report, 'extraData', String(report.alarmsIssuesReportOptions));\n }\n };\n}\n","import { set } from '@ember/object';\nimport { capitalize } from '@ember/string';\nimport ExtraDataRoute, { ExtraDataKeyEnum } from 'customer-site/classes/commercial/reports/edit/extra-data-route';\nimport { EmberUserActivityReportEdit } from '../../../../enums/CustomerPageUrl';\n\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\n/**\n * Default values for the User Activity Report extra data.\n */\nconst DefaultUserActivityReportExtraData = {\n [ExtraDataKeyEnum.ShowUserAttributes]: false,\n [ExtraDataKeyEnum.ExpectedInPersonDays]: 0\n};\n\ntype UserActivityReportExtraData = {\n [ExtraDataKeyEnum.ExpectedInPersonDays]: number;\n [ExtraDataKeyEnum.ShowUserAttributes]: boolean;\n};\n\n/**\n * Converts the extra data object to a string and sets the value on the report model.\n */\nexport function updateReportExtraData(report: BaseReport, extraData: UserActivityReportExtraData) {\n set(\n report,\n 'extraData',\n Object.keys(extraData)\n .map(\n (key: ExtraDataKeyEnum) =>\n `${key}=${\n key === ExtraDataKeyEnum.ShowUserAttributes\n ? capitalize(extraData[key].toString())\n : extraData[key]\n }`\n )\n .join('&')\n );\n}\n\n/**\n * @classdesc\n * Route for the User Activity Report edit page\n */\nexport default class UserActivityReportEditRoute extends ExtraDataRoute {\n routeId = EmberUserActivityReportEdit;\n\n extraDataDelegate = (report: BaseReport) => {\n // Set the defaults for the UAR extra data.\n if (report.get('extraData') === '') {\n updateReportExtraData(report, DefaultUserActivityReportExtraData);\n }\n };\n}\n","import { set } from '@ember/object';\nimport ExtraDataRoute from 'customer-site/classes/commercial/reports/edit/extra-data-route';\nimport { ShowUserCredentials } from 'customer-site/enums/UserSummaryReportOptions';\nimport { EmberUserSummaryReportEdit } from '../../../../enums/CustomerPageUrl';\n\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\n/**\n * @classdesc\n *\n * Route for the Access Control User Summary Report edit page\n *\n */\nexport default class Route extends ExtraDataRoute {\n routeId = EmberUserSummaryReportEdit;\n\n extraDataDelegate = (report: BaseReport) => {\n // Default to showing user credentials\n if (report.extraData === '') {\n set(report, 'extraData', ShowUserCredentials.toString());\n }\n };\n}\n","import { set, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AdcBaseRoute from '../../../../classes/base-route';\nimport { EmberVideoHealthReportEdit } from '../../../../enums/CustomerPageUrl';\nimport { FullReport, HideSnapshotsSetting } from '../../../../enums/VideoHealthReportExtraData';\n\nimport type Transition from '@ember/routing/transition';\nimport type AjaxService from 'customer-site/services/ajax';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type ReportEditRoute from '../route';\n\ntype VideoHealthReportEditModel = ModelFrom & {\n canViewLiveVideo: Promise;\n};\n\n/**\n * @classdesc Route for Video Health Reports.\n */\nexport default class VideoHealthReportEditRoute extends AdcBaseRoute {\n @service declare ajax: AjaxService;\n\n routeId = EmberVideoHealthReportEdit;\n\n model(_: any, transition: Transition): VideoHealthReportEditModel {\n return {\n ...this.modelFor>(transition.to.parent!.name),\n canViewLiveVideo: this.ajax.apiRequest(\n 'video/permissions/videoStreamingPermissionsCollections/canViewLiveVideo'\n )\n };\n }\n\n async afterModel(model: VideoHealthReportEditModel) {\n set(model.data, 'canViewLiveVideo', model.canViewLiveVideo);\n (async () => {\n const canViewLiveVideo = await model.canViewLiveVideo,\n report = await model.data.report,\n modelProps = {\n ...model.data\n };\n\n if (report.extraData === '') {\n set(report, 'extraData', canViewLiveVideo ? FullReport.toString() : HideSnapshotsSetting.toString());\n }\n\n // If the current user does not have LiveView permission and this report includes snapshots, then they should not be able to edit this report.\n if (!canViewLiveVideo && report.extraData === FullReport.toString()) {\n report.canEdit = false;\n }\n\n setProperties(model.data, modelProps);\n })();\n }\n}\n","import { tracked } from '@glimmer/tracking';\nimport { action, computed, setProperties } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { EmberReportsCatalog, EnterpriseReportsCenter, ReportsCenter } from '../../../enums/CustomerPageUrl';\nimport BaseReportsController from './base-reports-controller';\n\nimport type { Registry as ServiceRegistry } from '@ember/service';\n\n/**\n * @classdesc View all reports.\n *\n * Controller for single-system reports\n *\n * @class IndexController\n * @extends commercial.reports.index.BaseReportsRoute\n * @memberof commercial.reports.index\n */\nexport default class Controller extends BaseReportsController {\n @service declare ajax: ServiceRegistry['ajax'];\n @service declare identityManager: ServiceRegistry['identity-manager'];\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare media: ServiceRegistry['media'];\n @service declare navigation: ServiceRegistry['navigation'];\n @service declare store: ServiceRegistry['store'];\n\n /** @override */\n catalogRouteId = EmberReportsCatalog;\n\n /** @override */\n catalogRoutePrefix = 'commercial';\n\n queryParams = ['searchString', 'reportType'];\n\n /**\n * Enum of the type of report that we're viewing. Back end will filter the available reports to show depending on the enum\n */\n reportType?: number;\n\n /**\n * String provided by the user to filter out the different reports\n *\n */\n searchString = '';\n\n /**\n * If the user is browsing on the mobile app\n */\n @alias('identityManager.isMobileApp')\n isMobileApp?: boolean;\n\n /**\n * Number of reports based on the reports returned from a search\n *\n */\n @alias('model.reports.length')\n reportsCount?: number;\n\n /**\n * Is the user on an enterprise account\n */\n @alias('identityManager.isEnterprise')\n isEnterprise?: boolean;\n\n /**\n * Total number of reports regardless of the search query. This is set in the setupController\n *\n */\n @tracked\n totalReportsCount?: number;\n\n /**\n * Transition to the add new reports page\n */\n @action\n addNewReport(): void {\n this.contextManager.transitionToNativeRoute(this.catalogRouteId, undefined, { reportType: this.reportType });\n }\n\n /**\n * If a report has been successfully deleted, decrement the totalReportsCount\n *\n */\n @action\n decrementTotalReportsCount(): void {\n if (this.totalReportsCount) {\n this.totalReportsCount--;\n }\n }\n\n /**\n * Transition the user to the legacy reports page and increment a counter for wavefront. We will not allow this if they're on mobile\n */\n @action\n transitionToLegacyPage(): void {\n if (!this.media.isMobile) {\n this.ajax.apiRequest('notifications/reports/baseReports/logTransitionToLegacyReportsPage', {}, {}, 'POST');\n this.transitionToLegacyReportsPage(this.isEnterprise ? EnterpriseReportsCenter : ReportsCenter);\n }\n }\n\n /**\n * Transitions the user to the legacy. It's a tracked property so we can override and test it.\n */\n @tracked\n transitionToLegacyReportsPage = (routeId: number) => this.navigation.transitionToRouteId(routeId);\n\n /**\n * Handles the formatting of the \"Reports\" string that's next to the search bar\n *\n */\n @computed('reportsCount', 'searchString', 'totalReportsCount')\n get reportsCountText(): string {\n const { intl } = this;\n\n // If the user has provided a search string, display the reportsCount/totalReports\n if (this.searchString) {\n return intl.t('commercial.reports.index.reportsCount', {\n count: this.reportsCount,\n numReports: this.totalReportsCount\n });\n }\n\n // If there is no search string, just display the number of total reports\n return intl.t('commercial.reports.index.totalReportsCount', { numReports: this.totalReportsCount });\n }\n\n resetQueryParams(): void {\n setProperties(this, {\n searchString: '',\n reportType: undefined\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 'commercial/reports/index': Controller;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/access-history-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport {\n ArmedAway,\n ArmedStay,\n Disarmed,\n DoorAccessed,\n DoorAccessedDoubleSwipe,\n DoorBuzzedFromWebsite,\n DoorFailedAccess,\n DoorForcedOpen,\n DoorHeldOpen,\n DoorLocked,\n DoorUnlocked,\n LockCommandSent,\n UnlockCommandSent,\n UnlockFloorCommandSent,\n LockFloorCommandSent\n} from 'customer-site/enums/EventType';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\ninterface EventGroupsArgs {\n id: number;\n eventIds: number[];\n}\n\nexport type BaseReportEventsEditModel = {\n data: {\n report: BaseReport;\n };\n};\n\ninterface AccessHistoryReportEditSignature {\n Args: {\n model: BaseReportEventsEditModel;\n };\n}\n\nenum EventGroupEnum {\n DoorAccessed,\n DoorLocked,\n DoorUnlocked,\n DoorFailedAccess,\n DoorHeldOpen,\n DoorForcedOpen,\n Disarmed\n}\n\n/**\n * Each selectable report event is mapped to a group of eventIds. The id is the first id in eventIds, and is used by the dropdown\n * item to determine which eventIds have been selected and need to be saved on the report.\n */\nexport const eventGroups: EventGroupsArgs[] = [\n {\n id: EventGroupEnum.DoorAccessed,\n eventIds: [DoorAccessed, DoorBuzzedFromWebsite, 187, DoorAccessedDoubleSwipe]\n },\n {\n id: EventGroupEnum.DoorLocked,\n eventIds: [DoorLocked, LockCommandSent, LockFloorCommandSent]\n },\n {\n id: EventGroupEnum.DoorUnlocked,\n eventIds: [DoorUnlocked, UnlockCommandSent, UnlockFloorCommandSent]\n },\n {\n id: EventGroupEnum.DoorFailedAccess,\n eventIds: [DoorFailedAccess]\n },\n {\n id: EventGroupEnum.DoorHeldOpen,\n eventIds: [DoorHeldOpen]\n },\n {\n id: EventGroupEnum.DoorForcedOpen,\n eventIds: [DoorForcedOpen]\n },\n {\n id: EventGroupEnum.Disarmed,\n eventIds: [Disarmed, ArmedStay, ArmedAway]\n }\n];\n\n/**\n * This mapping gets used when the event menu is generated. It determines what event will be selected and which resource text to output.\n */\nexport const accessHistoryReportEventMapping: [number, string][] = [\n [EventGroupEnum.DoorAccessed, 'doorAccessedEvents'],\n [EventGroupEnum.DoorLocked, 'doorLockedEvents'],\n [EventGroupEnum.DoorUnlocked, 'doorUnlockedEvents'],\n [EventGroupEnum.DoorFailedAccess, 'accessAttemptFailedEvents'],\n [EventGroupEnum.DoorHeldOpen, 'doorHeldOpenEvents'],\n [EventGroupEnum.DoorForcedOpen, 'doorForcedOpenEvents'],\n [EventGroupEnum.Disarmed, 'panelArmDisarmEvents']\n];\n\n// exported Event Ids for the route to build default data\nexport const accessHistoryEventGroups = eventGroups.map((eventGroup) => eventGroup.eventIds);\n\nexport default class AccessHistoryReportEdit extends Component {\n @service declare intl: ADCIntlService;\n\n /**\n * Holds the model for the current report\n */\n @alias('args.model.report')\n declare report: BaseReport;\n\n /**\n * Holds the eventTypes currently selected for the report\n */\n @alias('report.eventTypes')\n declare eventTypes: number[];\n\n /**\n * Resource path that the event dropdown component will use for each event\n */\n resourcePath = 'commercial.reports.edit.access-history-report';\n\n /**\n * Mapping of the event type to the resourceString that'll be passed into the event dropdown component.\n * The first element of each array is the typeEnum that maps to the id element of the eventGroups object.\n */\n eventMapping: [number, string][] = accessHistoryReportEventMapping;\n\n /**\n * Check if the current event is on the report. We compare the EventGroupEnum to the group of eventIds that are mapped to it\n */\n @action\n getEventState(eventGroupEnum: number): boolean {\n // Get the eventIds that map to the eventGroupEnum\n const eventIds = eventGroups.find((item) => item.id === eventGroupEnum)?.eventIds ?? [];\n // Check if all those eventIds are on eventTypes, if there are no report events selected then every event should be selected to prevent a report with no data being sent out\n return this.eventTypes.length === 0 || eventIds.every((id: number) => this.eventTypes.includes(id));\n }\n\n /**\n * Since a report event can have multiple events mapped to it, this method saves the eventGroups that each event dropdown element is mapped to based on its id.\n */\n @action\n setEventTypesOnReport(eventTypeOptions: number[]): void {\n if (this.report) {\n const newEventTypesArray = eventGroups\n .map((group) => {\n // Return the event group that contains the id of the selected event.\n if (eventTypeOptions.includes(group.id)) {\n return group.eventIds;\n }\n return [];\n })\n .flat();\n\n set(this.report, 'eventTypes', newEventTypesArray);\n }\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::AccessHistoryReportEdit': typeof AccessHistoryReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n

\\n {{t \\'enterprise.reports.edit.battery-level-report.batteryLevelReportDescription\\'}}\\n

\\n
\\n

{{t \\'enterprise.reports.edit.battery-level-report.belowBatteryLevelSelector\\'}}

\\n \\n
\\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/battery-level-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed, set, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { deviceTypeToLabelMap } from 'customer-site/enterprise/reports/edit/battery-level-report/route';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport DropdownSelectItem, { UNSELECTED, SELECTED } from '@adc/ui-components/utils/dropdown-select-item';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\n/**\n * Formats the BLR extra data info as a string.\n * Converts the array of filtered devices into a string w/\n * ascii replacement for commas.\n */\nexport function getExtraDataString(batteryLevelThreshold: string, deviceFilters: string[]): string {\n return `${BlrExtraDataKey.BelowValue}=${batteryLevelThreshold}&${\n BlrExtraDataKey.DeviceFilters\n }=${encodeURIComponent(String(deviceFilters)).toLowerCase()}`;\n}\n\ninterface BatteryLevelReportEditSignature {\n Args: {\n model: ResolvedReportEditModel;\n };\n}\n\n// Should be kept in sync with the values in\n// ABO/CustomerNotifications/Reports/BatteryLevelReport/BatteryLevelReport.cs\n// Needs to match misspelling in db\nexport enum BlrExtraDataKey {\n BelowValue = 'below_value_key',\n DeviceFilters = 'device_fiters_key'\n}\n\nexport default class BatteryLevelReportEdit extends Component {\n @service declare intl: ADCIntlService;\n\n constructor(owner: BatteryLevelReportEdit, args: BatteryLevelReportEditSignature['Args']) {\n super(owner, args);\n\n const report = args.model.report,\n extraDataProperties = decodeURIComponent(report.extraData)\n .split('&')\n .reduce(\n (acc, cur) => {\n const keyValue = cur.split('=');\n switch (keyValue[0]) {\n case BlrExtraDataKey.BelowValue:\n case BlrExtraDataKey.DeviceFilters:\n acc[keyValue[0]] = keyValue[1];\n break;\n default:\n break;\n }\n\n return acc;\n },\n { [BlrExtraDataKey.BelowValue]: '', [BlrExtraDataKey.DeviceFilters]: '' }\n );\n\n setProperties(this, {\n report,\n batteryLevelThreshold: extraDataProperties[BlrExtraDataKey.BelowValue],\n deviceFilters: extraDataProperties[BlrExtraDataKey.DeviceFilters].split(',')\n });\n }\n\n resourcePath = 'enterprise.reports.edit.battery-level-report';\n\n @tracked declare report: BaseReport;\n\n @tracked declare batteryLevelThreshold: string;\n\n @tracked declare deviceFilters: string[];\n\n /**\n * Updates the ExtraData property on the Battery Level Report\n */\n updateReportExtraData(): void {\n set(this.report, 'extraData', getExtraDataString(this.batteryLevelThreshold, this.deviceFilters));\n }\n\n /**\n * Generates the possible battery level thresholds for the report.\n */\n @computed('batteryLevelThreshold', 'resourcePath')\n get thresholdOptions(): DropdownSelectItem[] {\n const createThresholdDropdownItem = (batteryLevel: string): DropdownSelectItem =>\n DropdownSelectItem.create({\n name: this.intl.t(`${this.resourcePath}.batteryLevelThreshold`, {\n batteryLevel\n }),\n value: batteryLevel,\n state: this.batteryLevelThreshold === batteryLevel ? SELECTED : UNSELECTED\n });\n\n // Create a threshold dropdown for every 5% of battery.\n return [...Array(20).keys()].map((num) => {\n // Convert each key of the array to a\n // multiple of 5 cast to a string\n const level = ((num + 1) * 5).toString();\n return createThresholdDropdownItem(level);\n });\n }\n\n /**\n * Generates the possible device type checkboxes for the report.\n */\n @computed('deviceFilters', 'resourcePath')\n get deviceTypeItems(): BinaryListItem[] {\n return Array.from(deviceTypeToLabelMap).map(([device, label]) => {\n return new BinaryListItem({\n label: this.intl.t(`${this.resourcePath}.${label}`),\n state: this.deviceFilters.includes(device.toString()),\n props: {\n id: device\n }\n });\n });\n }\n\n @action\n changedFilteredDeviceTypes(filteredDeviceTypes: BinaryListItem<{ id: number }>[]): void {\n const selectedTypes = filteredDeviceTypes.filter((item) => item.state).map((item) => String(item.props.id));\n\n set(this, 'deviceFilters', selectedTypes);\n this.updateReportExtraData();\n }\n\n @action\n changedBatteryLevelThreshold(batteryLevel: string): void {\n set(this, 'batteryLevelThreshold', batteryLevel);\n this.updateReportExtraData();\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BatteryLevelReportEdit': typeof BatteryLevelReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n\\n
\\n

{{@reportCatalogItem.notificationTypeName}}

\\n

{{@reportCatalogItem.notificationTypeDescription}}

\\n
\\n\\n\",{ moduleName: \"customer-site/components/commercial/report-catalog-item-row/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nimport './_style.scss';\nimport type { ReportCatalogItemParams } from 'customer-site/commercial/reports/catalog/controller';\nimport type ReportCatalogItem from 'customer-site/models/notifications/reports/report-catalog-item';\nimport type NavigationService from 'customer-site/services/navigation';\n\n/**\n * The reportCatalogItemRowParams is a method that will return an object that contains all of the properties that the report catalog item will use\n */\ninterface ReportCatalogItemRowSignature {\n Args: {\n reportCatalogItem: ReportCatalogItem;\n reportCatalogItemParams: ReportCatalogItemParams;\n };\n}\n\n/**\n * @classdesc\n *\n * Displays a single ReportCatalogItem in the Reports Catalog view.\n */\nexport default class ReportCatalogItemRow extends Component {\n @service declare navigation: NavigationService;\n\n /**\n * An object that holds all of the properties passed down from the report catalog template\n */\n @alias('args.reportCatalogItemParams')\n declare reportCatalogItemParams: ReportCatalogItemParams;\n\n /**\n * Called when any part of this element is clicked,\n * to transition to the Legacy add page for the specified type of report.\n */\n @action\n selectReportItem(id: number): void {\n this.navigation.transitionToRouteId(this.reportCatalogItemParams.newReportRouteId, 'new', {\n queryParams: {\n notificationTypeId: id,\n reportType: this.reportCatalogItemParams.reportType\n }\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::ReportCatalogItemRow': typeof ReportCatalogItemRow;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n \\n\\n \\n {{!-- TODO: This is a strange structure and not consistent with what we do in other routes. --}}\\n
\\n

\\n {{t \\'commercial.reports.catalog.catalogTitle\\'}}\\n

\\n
\\n\\n {{#each catalogItems as |reportCatalogItem|}}\\n \\n {{/each}}\\n
\\n\\n \\n\\n \\n
\\n
\",{ moduleName: \"customer-site/components/commercial/reports/catalog-page/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport type { BaseCatalogRouteModel } from 'customer-site/commercial/reports/catalog/base-catalog-route';\nimport type { ReportCatalogItemParams } from 'customer-site/commercial/reports/catalog/controller';\n\nexport interface CommercialReportsCatalogPageSignature {\n Args: {\n model: BaseCatalogRouteModel;\n reportCatalogItemParams: ReportCatalogItemParams;\n };\n}\n\nconst CommercialReportsCatalogPage = templateOnlyComponent();\nexport default CommercialReportsCatalogPage;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::CatalogPage': typeof CommercialReportsCatalogPage;\n }\n}\n","import { tracked } from '@glimmer/tracking';\n\nimport type { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\nexport interface DetailsProps {\n id: string;\n children?: {\n id: string;\n label: string;\n }[];\n}\n\ninterface DetailsByType {\n label: string;\n items: BinaryListItem[];\n}\n\n/**\n * @classdesc\n *\n * A helper object used when selecting items to be filtered by a report.\n */\nexport default abstract class ReportItemSelectionInfo {\n @tracked report: BaseReport;\n\n constructor(report: BaseReport) {\n this.report = report;\n }\n\n /**\n * A 1-dimensional array containing all items which are currently selected.\n */\n abstract get selectedItems(): string[];\n\n /**\n * Whether the current report allows item selection.\n */\n abstract get allowsItemSelection(): boolean;\n\n /**\n * A 1-dimensional array containing all items that can be added to this report.\n */\n abstract get allItemIds(): string[];\n\n /**\n * Creates a checkbox list of items displaying\n * which items are currently slated to be included in the report.\n */\n abstract get itemDetailsByType(): (DetailsByType | null)[];\n\n /**\n * Determines the type of item selection for this report.\n */\n abstract get reportItemSelectionType(): string;\n}\n","import { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport { HVACHealthReport, VideoHealthReport } from '../../../../enums/CustomerNotificationType';\nimport ReportItemSelectionInfo from './report-item-selection-info';\n\nimport type BaseDevice from 'customer-site/models/devices/base-device';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type { DetailsProps } from './report-item-selection-info';\n\ninterface IChildDevice {\n id: string;\n description: string;\n}\n\ntype DeviceByType = {\n label: string;\n devices: BaseDevice[];\n};\n\n/**\n * @classdesc\n *\n * A helper object used when selecting items to be filtered by a report.\n */\nexport default class ReportDeviceSelectionInfo extends ReportItemSelectionInfo {\n @tracked devicesByType: DeviceByType[];\n\n constructor(report: BaseReport, devicesByType: DeviceByType[]) {\n super(report);\n\n this.devicesByType = devicesByType;\n }\n\n @computed('report.deviceIds')\n get selectedItems(): string[] {\n return this.report.deviceIds ?? [];\n }\n\n @computed('report.allowsDeviceSelection')\n get allowsItemSelection(): boolean {\n return this.report.allowsDeviceSelection;\n }\n\n get allItemIds(): string[] {\n return this.devicesByType.reduce(\n (allItemIds, item) => [...allItemIds, ...item.devices.map(({ id }) => id)],\n []\n );\n }\n\n @computed('devicesByType', 'selectedItems')\n get itemDetailsByType(): ReportItemSelectionInfo['itemDetailsByType'] {\n return this.devicesByType.map(({ devices, label }) => {\n return devices\n ? {\n label,\n items: devices.map((device) => {\n const { id, description } = device,\n state = !!this.selectedItems?.includes(id),\n deviceSubItems = device.getSubItems();\n\n if (deviceSubItems.length) {\n return new BinaryListItem({\n label: description,\n state,\n props: {\n id,\n children: deviceSubItems.map(({ id, description }: IChildDevice) => ({\n id,\n label: description\n }))\n }\n });\n }\n\n return new BinaryListItem({\n label: description,\n state,\n props: {\n id\n }\n });\n })\n }\n : null;\n });\n }\n @computed('report.notificationType')\n get reportItemSelectionType(): string {\n const { notificationType } = this.report;\n\n if (notificationType === HVACHealthReport) {\n return 'thermostats';\n }\n\n if (notificationType === VideoHealthReport) {\n return 'cameras';\n }\n\n return 'sensors';\n }\n}\n","import { computed } from '@ember/object';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport ReportItemSelectionInfo from './report-item-selection-info';\n\nimport type { DetailsProps } from './report-item-selection-info';\n\n/**\n * @classdesc\n *\n * A helper object used when selecting locations to be filtered by a report.\n */\nexport default class ReportLocationSelectionInfo extends ReportItemSelectionInfo {\n @computed('report.locationIds')\n get selectedItems(): string[] {\n return this.report.locationIds ?? [];\n }\n\n @computed('report.allowsLocationSelection')\n get allowsItemSelection(): boolean {\n return this.report.allowsLocationSelection;\n }\n\n @computed('report.possibleLocations')\n get allItemIds(): string[] {\n return this.report.possibleLocations\n .map((location) => ({ label: '', locations: [location] }))\n .reduce((allItemIds, item) => [...allItemIds, ...item.locations.map(({ id }) => id)], []);\n }\n\n @computed('report.possibleLocations', 'selectedItems')\n get itemDetailsByType(): ReportItemSelectionInfo['itemDetailsByType'] {\n return this.report.possibleLocations\n .map((location) => ({ label: '', locations: [location] }))\n .map(({ locations, label }) => {\n return locations\n ? {\n label,\n items: locations.map((location) => {\n const untypedLocation = location,\n { id } = untypedLocation;\n\n return new BinaryListItem({\n label: untypedLocation.description,\n state: !!this.selectedItems?.includes(id),\n props: {\n id\n }\n });\n })\n }\n : null;\n });\n }\n\n get reportItemSelectionType(): string {\n return 'locations';\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#if this.showItemSelection}}\\n
\\n \\n \\n\\n {{#if this.selectingSpecificItems}}\\n {{#if @showLocationSelectionActionSheet}}\\n \\n \\n {{else}}\\n {{#each this.reportItemSelectionInfo.itemDetailsByType as |itemDetailsList|}}\\n {{#if itemDetailsList}}\\n {{#if itemDetailsList.label}}\\n

{{itemDetailsList.label}}

\\n {{/if}}\\n\\n \\n <:content as |item|>\\n
    \\n {{#each item.props.children as |child|}}\\n
  • {{child.label}}
  • \\n {{/each}}\\n
\\n \\n \\n {{/if}}\\n {{/each}}\\n {{/if}}\\n {{/if}}\\n
\\n
\\n{{/if}}\\n\",{ moduleName: \"customer-site/components/commercial/report-item-selection/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, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { camelize } from '@ember/string';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport ReportDeviceSelectionInfo from './helper-objects/report-device-selection-info';\nimport ReportLocationSelectionInfo from './helper-objects/report-location-selection-info';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type { DeviceItem } from 'customer-site/classes/commercial/reports/edit/base-report-edit-route';\nimport type { SelectionResult } from 'customer-site/components/action-sheets/enterprise/locations/location-selection/helpers/selection-items';\nimport type { LocationSelectionActionSheetProperties } from 'customer-site/components/action-sheets/enterprise/locations/location-selection/index';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\nexport interface ReportItemSelectionSignature {\n Args: {\n selectionType: 'device' | 'location';\n devicesByType: DeviceItem[];\n report: BaseReport;\n changeItemAmount: (selectingSpecificItems: boolean) => void;\n showLocationSelectionActionSheet: boolean;\n locationSelectionActionSheetProperties: {\n properties: LocationSelectionActionSheetProperties;\n close: (result?: SelectionResult) => void;\n };\n };\n}\n\n/**\n * @classdesc\n * A component used for selecting items in an ember report.\n */\nexport default class ReportItemSelection extends Component {\n @service declare intl: ServiceRegistry['adc-intl'];\n\n /**\n * Helper object used with report item filtering.\n */\n @tracked reportItemSelectionInfo: ReportDeviceSelectionInfo | ReportLocationSelectionInfo;\n\n constructor(owner: unknown, args: ReportItemSelectionSignature['Args']) {\n super(owner, args);\n\n assert(\n 'The report-item-selection component requires a \"changeItemAmount\" closure action',\n args.changeItemAmount\n );\n\n const info = (this.reportItemSelectionInfo =\n args.selectionType === 'device'\n ? new ReportDeviceSelectionInfo(args.report, args.devicesByType)\n : new ReportLocationSelectionInfo(args.report)),\n selectedItemCount = info.selectedItems.length;\n\n // Make sure to initialize selectingSpecificItems based on whether the report\n // had selected items before.\n this.selectingSpecificItems =\n info.allowsItemSelection && selectedItemCount > 0 && selectedItemCount < info.allItemIds.length;\n }\n\n @tracked isLocationSelectionActionSheetOpen = false;\n @tracked selectingSpecificItems = false;\n\n /**\n * Button text that updates depending on the number of locations selected.\n */\n @computed('reportItemSelectionInfo.selectedItems.length')\n get locationSelectionButtonText() {\n const numLocations = this.reportItemSelectionInfo.selectedItems.length;\n return numLocations === 0\n ? this.intl.t('components.commercial.reports.report-edit-route.selectLocations')\n : this.intl.t('components.commercial.reports.report-edit-route.selectedLocationsCount', { numLocations });\n }\n\n @action\n closeActionSheet(result?: SelectionResult): void {\n this.isLocationSelectionActionSheetOpen = false;\n if ((result?.selectedIds?.length ?? -1) >= 0) {\n this.args.locationSelectionActionSheetProperties.close(result);\n }\n }\n\n /**\n * These are the options for whether or not the report should use all items, or selected items.\n */\n @computed('reportItemSelectionInfo.reportItemSelectionType', 'selectingSpecificItems', 'args.changeItemAmount')\n get itemAmountOptions(): BinaryListItem<{ selectingSpecificItems: boolean }>[] {\n const { selectingSpecificItems } = this;\n\n this.args.changeItemAmount(selectingSpecificItems);\n\n const fn = (key: string, state: boolean, selectingSpecificItems: boolean) =>\n new BinaryListItem({\n label: this.intl.t(\n `commercial.reports.edit.${camelize(\n key + ' ' + this.reportItemSelectionInfo.reportItemSelectionType\n )}`\n ),\n state,\n props: {\n selectingSpecificItems\n }\n });\n\n return [fn('all', !selectingSpecificItems, false), fn('onlyTheFollowing', selectingSpecificItems, true)];\n }\n\n /**\n * Whether we should show the section for selecting items.\n * We only want to show it if the report allows item selection and there's at least one available item.\n * Also, it's possible that all items have been removed\n * from the location since the report was created, in which case we will also just hide the section.\n */\n @computed('reportItemSelectionInfo.{allowsItemSelection,allItemIds.length}')\n get showItemSelection(): boolean {\n return !!this.reportItemSelectionInfo.allowsItemSelection && this.reportItemSelectionInfo.allItemIds.length > 0;\n }\n\n /**\n * This is the text that changes based on whether you are selecting locations (for Enterprise reports which permit it),\n * thermostats (for HVAC Health Report), cameras/svrs (for VHR), or sensors (all other reports).\n */\n get itemTypeText(): string {\n return this.intl.t(`commercial.reports.edit.${this.reportItemSelectionInfo.reportItemSelectionType}ToReport`);\n }\n\n /**\n * Sets the model's items to either all items or the selected items.\n */\n @action\n changedItemAmountType(items: ReportItemSelection['itemAmountOptions']): void {\n const item = items.find(({ state }) => state);\n if (item) {\n this.args.changeItemAmount((this.selectingSpecificItems = item.props.selectingSpecificItems));\n }\n }\n\n /**\n * Sets the model's items to the list of currently selected items.\n */\n @action\n changedSelectedItems(\n itemDetails: BinaryListItem<{ id: string; children: { id: string; label: string }[] }>[]\n ): void {\n const info = this.reportItemSelectionInfo,\n // allIds: ids for all items from the current checkbox list\n allIds = itemDetails.map((d) => d.props.id),\n // selectedIds: only the selected ids for the current checkbox list where the checkbox is being toggled\n selectedIds = itemDetails.filter(({ state }) => state).map((d) => d.props.id);\n\n // We have some special logic to make sure we include any items checked from other checkbox lists here.\n // First, we will include the item if it's in the selectedIds list\n // then we will check to see if the item isn't in the list of items for the current checkbox.\n // If it's not in the current checkbox list, we will add it if it's in the list of all selected ids for the report.\n set(\n this.args.report,\n info.reportItemSelectionType === 'locations' ? 'locationIds' : 'deviceIds',\n info.allItemIds.filter(\n (item) => selectedIds.includes(item) || (!allIds.includes(item) && info.selectedItems?.includes(item))\n )\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::ReportItemSelection': typeof ReportItemSelection;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/alarms-issues-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport {\n IncludeAlarmsEvent,\n IncludeLowBatteryEvent,\n IncludeLostPowerEvent,\n IncludeTamperEvent,\n IncludeWaterAlertEvent,\n IncludeCameraUnresponsiveEvent,\n IncludeGeneralFailureEvent,\n IncludeGunshotDetectedEvent,\n IncludeSimulatedGunshotDetectedEvent\n} from '../../../../enums/AlarmsIssuesReportOptions';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type { BaseReportEventsEditModel } from '../access-history-report-edit/index';\n\ninterface AlarmsIssuesReportEditSignature {\n Args: {\n model: BaseReportEventsEditModel;\n };\n}\n\nexport default class AlarmsIssuesReportEdit extends Component {\n constructor(owner: AlarmsIssuesReportEdit, args: AlarmsIssuesReportEditSignature['Args']) {\n super(owner, args);\n\n this.alarmsIssuesEventTypes = this.extraData ? this.extraData.split(',').map(Number) : [];\n }\n\n /**\n * Mapping of every alarms issues report event type and their resource string. Not every event is visible for each login.\n * This needs to be kept in sync with the alarms-issues-report-test mapping because we can't export this without causing a memory leak.\n */\n alarmsIssuesReportEventMapping: [number, string][] = [\n [IncludeAlarmsEvent, 'includeAlarmsEvent'],\n [IncludeLowBatteryEvent, 'includeLowBatteryEvent'],\n [IncludeLostPowerEvent, 'includeLostPowerEvent'],\n [IncludeTamperEvent, 'includeTamperEvent'],\n [IncludeWaterAlertEvent, 'includeWaterAlertEvent'],\n [IncludeCameraUnresponsiveEvent, 'includeCameraUnresponsiveEvent'],\n [IncludeGeneralFailureEvent, 'includeGeneralFailureEvent'],\n [IncludeGunshotDetectedEvent, 'includeGunshotDetectedEvent'],\n [IncludeSimulatedGunshotDetectedEvent, 'includeSimulatedGunshotDetectedEvent']\n ];\n\n @service declare intl: ADCIntlService;\n\n @alias('args.model.report')\n declare report: BaseReport;\n\n /**\n * Holds the selected event IDs as a string\n */\n @alias('report.extraData')\n declare extraData: string;\n\n /**\n * alarmsIssuesReportOptions references all of the supported eventEnums on the login because not every event is supported based on the login.\n */\n @alias('report.alarmsIssuesReportOptions')\n declare supportedAlarmsIssuesReportOptions: number[];\n\n /**\n * Apart from this report, every report that uses events uses the eventTypes property to keep track of currently selected events.\n * To be consistent we will also use it here, while also saving the events to extraData as a string for the back end.\n */\n @tracked\n declare alarmsIssuesEventTypes: number[];\n\n resourcePath = 'commercial.reports.edit.alarms-issues-report';\n\n /**\n * Mapping from AlarmsIssuesReportOptions enums to strings. Not every event is supported on every login so we'll filter the enums based off of the list of supported event options.\n */\n eventMapping = this.alarmsIssuesReportEventMapping.filter((event) =>\n this.supportedAlarmsIssuesReportOptions.includes(event[0])\n );\n\n /**\n * Determines if the event should be selected in the event dropdown menu depending on the number and type of events that are currently selected.\n */\n @action\n getEventState(eventEnum: number): boolean {\n return this.alarmsIssuesEventTypes.length === 0 || this.alarmsIssuesEventTypes.includes(eventEnum);\n }\n\n /**\n * Method that gets passed down to the report event component and called again when a new event is selected/deselected\n */\n @action\n setEventTypesOnReport(eventTypeOptions: number[]): void {\n if (this.report) {\n this.alarmsIssuesEventTypes = eventTypeOptions;\n this.setExtraData();\n }\n }\n\n @action\n setExtraData() {\n set(this, 'extraData', String(this.alarmsIssuesEventTypes));\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::AlarmsIssuesReportEdit': typeof AlarmsIssuesReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#if @ruleCheckboxesAndDropdowns}}\\n \\n <:content as |item|>\\n {{#if item.props.peopleCountItems}}\\n \\n {{/if}}\\n {{#if item.props.waitTimeItems}}\\n \\n {{/if}}\\n \\n \\n{{else}}\\n

{{@noRuleText}}

\\n{{/if}}\",{ moduleName: \"customer-site/components/commercial/reports/business-activity-analytics/dropdown-items/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport type { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport type DropdownSelectItem from '@adc/ui-components/utils/dropdown-select-item';\n\ntype Item = BinaryListItem<{\n peopleCountItems?: DropdownSelectItem[];\n waitTimeItems?: DropdownSelectItem[];\n id: string;\n}>;\n\nexport interface CommercialReportsBusinessActivityAnalyticsDropdownItemsSignature {\n Args: {\n ruleCheckboxesAndDropdowns: Item[];\n changeCheckboxSelection: (items: Item[]) => unknown;\n noRuleText: string;\n changeDropdownValue: (v: string, n: string) => unknown;\n };\n}\n\nconst CommercialReportsBusinessActivityAnalyticsDropdownItems =\n templateOnlyComponent();\nexport default CommercialReportsBusinessActivityAnalyticsDropdownItems;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BusinessActivityAnalytics::DropdownItems': typeof CommercialReportsBusinessActivityAnalyticsDropdownItems;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n {{#unless this.isMobileApp}}\\n \\n {{/unless}}\\n\",{ moduleName: \"customer-site/components/commercial/reports/business-activity-analytics/rule-dropdown/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { EmberVideoBusinessActivityAnalyticsRuleList } from 'customer-site/enums/CustomerPageUrl';\nimport { LineMonitor, CrowdGathering, BusinessOccupancy } from 'customer-site/enums/OvlRuleType';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport DropdownSelectItem, { UNSELECTED, SELECTED } from '@adc/ui-components/utils/dropdown-select-item';\nimport { reportBasedLabelText } from '../../business-activity-analytics-report-edit/index';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type OvRule from 'customer-site/models/video/ov-rule';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type NavigationService from 'customer-site/services/navigation';\nimport type { CommercialReportsBusinessActivityAnalyticsDropdownItemsSignature } from '../dropdown-items/index';\nimport type { RuleState, RuleStateItemIndex } from '../helper-objects/baa-report-edit';\n\n/**\n * Creates the dropdown select items used to display the threshold choices.\n */\nfunction createDropdownSelectItems(\n ruleState: RuleState,\n thresholds: number[],\n ruleId: string,\n stateProp: RuleStateItemIndex,\n nameFn: (s: number) => string\n): DropdownSelectItem[] {\n return thresholds\n .filter((s: number) => s !== 0)\n .map((s: number, thresholdIndex: number) => {\n return DropdownSelectItem.create({\n name: nameFn(s),\n value: `${thresholdIndex}`,\n state: ruleState[ruleId][stateProp] === thresholdIndex ? SELECTED : UNSELECTED\n });\n });\n}\n\n/**\n * Gets the correct person count thresholds based on the type of rule.\n */\nfunction getPeopleCountThresholdsForRuleType(rule: OvRule): number[] {\n switch (rule.ruleType) {\n case LineMonitor:\n return rule.maxQueueSizes;\n case CrowdGathering:\n return rule.maximumCrowdSizes;\n case BusinessOccupancy:\n return rule.maximumOccupancies;\n }\n\n return [];\n}\n\ninterface RuleDropdownSignature {\n Args: {\n notificationType: number;\n rules: OvRule[];\n ruleState: RuleState;\n checkboxDropdownItems?: any;\n changeCheckboxSelection: any;\n changeDropdownValue: any;\n };\n}\n\n@intlPath({ path: 'commercial/reports/business-activity-analytics/rule-dropdown' })\nexport default class RuleDropdown extends Component {\n @service declare intl: ADCIntlService;\n @service declare contextManager: ContextManager;\n @service declare navigation: NavigationService;\n\n /**\n * Whether this is the mobile app or not.\n * Used to determine visibility of the link to the rule list page.\n */\n @alias('contextManager.identityModel.isMobileApp')\n declare isMobileApp: boolean;\n\n /**\n * The label for the rule selection section.\n */\n @computed('args.notificationType')\n get ruleSectionLabel(): string {\n return reportBasedLabelText(\n this,\n this.intl,\n 'ruleSectionLabel',\n 'peopleCountingRuleSelectionLabel',\n this.args.notificationType\n );\n }\n\n /**\n * The rule checkbox and threshold dropdown information.\n */\n @computed('args.{rules,ruleState}')\n get ruleCheckboxesAndDropdowns(): CommercialReportsBusinessActivityAnalyticsDropdownItemsSignature['Args']['ruleCheckboxesAndDropdowns'] {\n const { rules, ruleState } = this.args;\n return rules.map(\n (r: OvRule) =>\n new BinaryListItem({\n label: r.name,\n state: ruleState[r.id].selected,\n props: {\n id: r.id,\n peopleCountItems: createDropdownSelectItems(\n ruleState,\n getPeopleCountThresholdsForRuleType(r),\n r.id,\n 'personCountThresholdIndex',\n (s: number) => this.intl.tc(this, 'peopleCount', { count: s })\n ),\n waitTimeItems: createDropdownSelectItems(\n ruleState,\n r.ruleType === LineMonitor ? r.maxWaitTimes : [],\n r.id,\n 'waitTimeThresholdIndex',\n (s: number) => this.intl.t('generic.minutes', { num: s / 60 })\n )\n }\n })\n );\n }\n\n /**\n * Transitions to the rule list page for the camera of the first selected rule if there is one.\n */\n @action\n editRulesAndThresholds(): void {\n const rules = this.args.ruleState,\n cameraId =\n Object.keys(rules)\n .find((key: string) => rules[key].selected)\n ?.split('_')[0] ?? '';\n this.navigation.transitionToRouteId(EmberVideoBusinessActivityAnalyticsRuleList, { queryParams: { cameraId } });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BusinessActivityAnalytics::RuleDropdown': typeof RuleDropdown;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n {{#unless this.isMobileApp}}\\n \\n {{/unless}}\\n\",{ moduleName: \"customer-site/components/commercial/reports/business-activity-analytics/rule-group-dropdown/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { PeopleCountingReport } from 'customer-site/enums/CustomerNotificationType';\nimport { EmberVideoBusinessActivityAnalyticsRuleGroupList } from 'customer-site/enums/CustomerPageUrl';\nimport { BusinessOccupancy } from 'customer-site/enums/OvlRuleType';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport DropdownSelectItem, { UNSELECTED, SELECTED } from '@adc/ui-components/utils/dropdown-select-item';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type OvRuleGroup from 'customer-site/models/video/ov-rule-group';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type { CommercialReportsBusinessActivityAnalyticsDropdownItemsSignature } from '../dropdown-items/index';\nimport type { RuleGroupState } from '../helper-objects/baa-report-edit';\n\n/**\n * Creates the dropdown select items used to display the threshold choices.\n */\nfunction createRuleGroupDropdownSelectItems(\n ruleGroupState: RuleGroupState,\n thresholds: number[],\n ruleGroupId: string,\n nameFn: (s: number) => string\n): DropdownSelectItem[] {\n return thresholds\n .filter((s: number) => s !== 0)\n .map((s: number, idx: number) =>\n DropdownSelectItem.create({\n name: nameFn(s),\n value: `${idx}`,\n state: ruleGroupState[ruleGroupId].thresholdIndex === idx ? SELECTED : UNSELECTED\n })\n );\n}\n\ninterface RuleGroupDropdownSignature {\n Args: {\n notificationType: number;\n ruleGroups: OvRuleGroup[];\n ruleGroupState: RuleGroupState;\n checkboxDropdownItems?: any;\n changeCheckboxSelection: any;\n changeDropdownValue: any;\n };\n}\n\n@intlPath({ path: 'commercial/reports/business-activity-analytics/rule-group-dropdown' })\nexport default class RuleGroupDropdown extends Component {\n @service declare intl: ADCIntlService;\n @service declare contextManager: ContextManager;\n\n /**\n * Route for editing BAA rule groups.\n */\n ruleGroupRoute = EmberVideoBusinessActivityAnalyticsRuleGroupList;\n\n /**\n * Whether this is the mobile app or not.\n * Used to determine visibility of the link to the rule group list page.\n */\n @alias('contextManager.identityModel.isMobileApp')\n declare isMobileApp: boolean;\n\n /**\n * The label for the rule group selection section.\n */\n @computed('args.notificationType')\n get ruleGroupSectionLabel(): string {\n return this.intl.tc(\n this,\n `${\n this.args.notificationType === PeopleCountingReport ? 'peopleCounting' : 'occupancyPlusPeopleCounting'\n }RuleGroupSelectionLabel`\n );\n }\n\n /**\n * The rule checkbox and threshold dropdown information.\n */\n @computed('args.{ruleGroups,ruleState}')\n get ruleGroupCheckboxesAndDropdowns(): CommercialReportsBusinessActivityAnalyticsDropdownItemsSignature['Args']['ruleCheckboxesAndDropdowns'] {\n const { ruleGroups, ruleGroupState } = this.args;\n return ruleGroups.map(\n (r: OvRuleGroup) =>\n new BinaryListItem({\n label: r.name,\n state: ruleGroupState[r.id].selected,\n props: {\n id: r.id,\n peopleCountItems:\n r.ruleType === BusinessOccupancy\n ? createRuleGroupDropdownSelectItems(\n ruleGroupState,\n r.rules.length === 0 ? [] : r.thresholds,\n r.id,\n (s: number) =>\n this.intl.t(\n 'components.commercial.reports.business-activity-analytics.rule-dropdown.peopleCount',\n { count: s }\n )\n )\n : []\n }\n })\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BusinessActivityAnalytics::RuleGroupDropdown': typeof RuleGroupDropdown;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{#if this.model.report.allowsLocationSelection}}\\n

{{this.enterpriseRulesText}}

\\n {{else}}\\n \\n {{#if this.supportsRuleGroups}}\\n \\n {{/if}}\\n {{/if}}\\n\\n {{#if this.showIsTabularGraphic}}\\n \\n \\n \\n {{/if}}\\n
\",{ moduleName: \"customer-site/components/commercial/reports/business-activity-analytics-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed, set, setProperties } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { None, Csv } from 'customer-site/enums/ReportAttachmentSelection';\nimport { LastWeek } from 'customer-site/enums/ReportTimeframeType';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport {\n CrowdGatheringReport,\n OccupancyPlusPeopleCountingReport,\n PeopleCountingReport,\n LineMonitoringReport\n} from '../../../../enums/CustomerNotificationType';\nimport { LineMonitor, LineCount, BusinessOccupancy, CrowdGathering } from '../../../../enums/OvlRuleType';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type OvRule from 'customer-site/models/video/ov-rule';\nimport type OvRuleGroup from 'customer-site/models/video/ov-rule-group';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type {\n RuleGroupStateItem,\n RuleStateItem,\n RuleStateItemIndex\n} from '../business-activity-analytics/helper-objects/baa-report-edit';\nimport type RuleDropdown from '../business-activity-analytics/rule-dropdown/index';\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\n/**\n * Retrieves the translation for the passed resource based on the notification type.\n */\nexport function reportBasedLabelText(\n context: BusinessActivityAnalyticsReportEdit | RuleDropdown,\n intl: ADCIntlService,\n resource: string,\n peopleCountingResource: string,\n notificationType: number\n): string {\n if (notificationType == PeopleCountingReport) {\n return intl.tc(context, `${peopleCountingResource}`);\n }\n\n let reportType = 'rule';\n switch (notificationType) {\n case CrowdGatheringReport:\n reportType = 'crowdGathering';\n break;\n case OccupancyPlusPeopleCountingReport:\n reportType = 'occupancyPlusPeopleCounting';\n break;\n case LineMonitoringReport:\n reportType = 'queueMonitoring';\n break;\n }\n\n return intl.tc(context, `${resource}`, { reportType });\n}\n\n/**\n * Updates the report rule id infos.\n */\nfunction updateReportRuleIdInfos(report: BaseReport, ruleState: RuleState): void {\n set(\n report,\n 'ruleIdInfos',\n Object.entries(ruleState)\n .map(([ruleId, ruleStateItem]) => ({\n ruleId,\n personCountThresholdIndex: ruleStateItem.personCountThresholdIndex,\n waitTimeThresholdIndex: ruleStateItem.waitTimeThresholdIndex,\n selected: ruleStateItem.selected\n }))\n .filter((r) => r.selected)\n );\n}\n\n/**\n * Updates the report rule group infos.\n */\nfunction updateReportRuleGroupInfos(report: BaseReport, ruleGroupState: RuleGroupState): void {\n set(\n report,\n 'ruleGroupInfos',\n Object.entries(ruleGroupState)\n .map(([ruleGroupId, ruleGroupStateItem]) => ({\n ruleGroupId,\n thresholdIndex: ruleGroupStateItem.thresholdIndex,\n selected: ruleGroupStateItem.selected\n }))\n .filter((r) => r.selected)\n );\n}\n\ntype RuleState = Record;\ntype RuleGroupState = Record;\n\ntype StateProperty = 'ruleState' | 'ruleGroupState';\ntype BAAReportEditData = ResolvedReportEditModel & {\n rules?: OvRule[];\n ruleGroups?: OvRuleGroup[];\n};\n\ninterface BusinessActivityAnalyticsReportEditArgs {\n model: BAAReportEditData;\n}\n\n@intlPath({ path: 'commercial/reports/business-activity-analytics-report-edit' })\nexport default class BusinessActivityAnalyticsReportEdit extends Component {\n @service declare intl: ADCIntlService;\n @service declare contextManager: ContextManager;\n\n /**\n * The model we are editing.\n */\n @alias('args.model')\n declare model: BAAReportEditData;\n\n /**\n * The notification type we are currently editing.\n */\n @alias('model.report.notificationType')\n declare notificationType: number;\n\n /**\n * The rule type that corresponds to the current notification type.\n */\n @computed('notificationType')\n get ruleType(): number {\n switch (this.notificationType) {\n case CrowdGatheringReport:\n return CrowdGathering;\n case OccupancyPlusPeopleCountingReport:\n return BusinessOccupancy;\n case LineMonitoringReport:\n return LineMonitor;\n case PeopleCountingReport:\n return LineCount;\n }\n\n return -1;\n }\n\n /**\n * BAA rules available for this report type.\n */\n @computed('model.rules.@each.ruleType', 'ruleType')\n get rules(): OvRule[] {\n return this.model.rules?.filter((r) => r.ruleType === this.ruleType) ?? [];\n }\n\n /**\n * BAA rule groups available for this report type.\n */\n @computed('model.ruleGroups.@each.ruleType', 'ruleType')\n get ruleGroups(): OvRuleGroup[] {\n return this.model.ruleGroups?.filter((r) => r.ruleType === this.ruleType) ?? [];\n }\n\n /**\n * The dropdown info for the selectable rules.\n */\n @computed('rules', 'model.report.ruleIdInfos.@each.{personCountThresholdIndex,waitTimeThresholdIndex}')\n get ruleState(): RuleState {\n const ruleState: RuleState = {};\n this.rules.forEach((rule) => {\n ruleState[rule.id] = {\n selected: false,\n personCountThresholdIndex: 0,\n waitTimeThresholdIndex: 0\n };\n });\n\n this.model.report.ruleIdInfos.forEach((cridi) => {\n ruleState[cridi.ruleId] = {\n selected: true,\n personCountThresholdIndex: cridi.personCountThresholdIndex ?? 0,\n waitTimeThresholdIndex: cridi.waitTimeThresholdIndex ?? 0\n };\n });\n\n return ruleState;\n }\n\n /**\n * The dropdown info for the selectable rule groups.\n */\n @computed('ruleGroups', 'model.report.ruleGroupInfos.@each.thresholdIndex')\n get ruleGroupState(): RuleGroupState {\n const ruleGroupState: RuleGroupState = {};\n this.ruleGroups.forEach((ruleGroup) => {\n ruleGroupState[ruleGroup.id] = {\n selected: false,\n thresholdIndex: 0\n };\n });\n\n this.model.report.ruleGroupInfos.forEach((ruleGroupInfo) => {\n ruleGroupState[ruleGroupInfo.ruleGroupId] = {\n selected: true,\n thresholdIndex: ruleGroupInfo.thresholdIndex\n };\n });\n\n return ruleGroupState;\n }\n\n /**\n * The text to display instead of rule/rule group selection for enterprise reports.\n */\n @computed('notificationType', 'supportsRuleGroups')\n get enterpriseRulesText(): string {\n return this.supportsRuleGroups\n ? this.intl.tc(\n this,\n `${\n this.notificationType === PeopleCountingReport ? 'peopleCounting' : 'occupancyPlusPeopleCounting'\n }EnterpriseRulesText`\n )\n : reportBasedLabelText(this, this.intl, 'enterpriseRules', '', this.notificationType);\n }\n\n /**\n * Whether this notification type supports rule groups.\n */\n @computed('notificationType')\n get supportsRuleGroups(): boolean {\n return (\n this.notificationType === PeopleCountingReport ||\n this.notificationType === OccupancyPlusPeopleCountingReport\n );\n }\n\n /**\n * Whether to show the tabular/grpahic report selector used for the CGR and OPPCR.\n */\n @computed('notificationType')\n get showIsTabularGraphic(): boolean {\n return [CrowdGatheringReport, OccupancyPlusPeopleCountingReport].includes(this.notificationType);\n }\n\n /**\n * The tabular and graphic list items for the selector.\n */\n @computed('model.report.isTabularReport')\n get isTabularReportItems(): BinaryListItem[] {\n const { intl } = this;\n return [\n new BinaryListItem({\n label: intl.tc(this, 'tabularReport'),\n state: this.model.report.isTabularReport\n }),\n new BinaryListItem({\n label: intl.tc(this, 'graphicReport'),\n state: !this.model.report.isTabularReport\n })\n ];\n }\n\n /**\n * Updates the selected threshold for a rule.\n */\n @action\n changeRuleDropdownValue(ruleId: string, stateProp: RuleStateItemIndex, newIdx: string): void {\n const { ruleState } = this,\n rule = ruleState[ruleId];\n rule[stateProp] = Number(newIdx);\n if (rule.selected) {\n updateReportRuleIdInfos(this.model.report, ruleState);\n }\n }\n\n /**\n * Updates the selected threshold for a rule group.\n */\n @action\n changeRuleGroupDropdownValue(ruleId: string, _: RuleStateItemIndex, newIdx: string): void {\n const { ruleGroupState } = this,\n ruleGroup = ruleGroupState[ruleId];\n ruleGroup.thresholdIndex = Number(newIdx);\n if (ruleGroup.selected) {\n updateReportRuleGroupInfos(this.model.report, ruleGroupState);\n }\n }\n\n /**\n * Updates the selected state for a rule/rule group.\n */\n @action\n changeCheckboxSelection(stateProperty: StateProperty, items: BinaryListItem[]): void {\n items.forEach((item: BinaryListItem & { props: { id: string } }) => {\n this[stateProperty][item.props.id].selected = item.state === true;\n });\n\n stateProperty === 'ruleState'\n ? updateReportRuleIdInfos(this.model.report, this.ruleState)\n : updateReportRuleGroupInfos(this.model.report, this.ruleGroupState);\n }\n\n /**\n * Updates the tabular/graphic selection for the report and forces a weekly timeframe for\n * the graphic report.\n */\n @action\n updateIsTabularReport(items: BinaryListItem[]): void {\n const isTabularReport = items[0].state as boolean,\n forcedTimeFrame = isTabularReport ? undefined : LastWeek,\n { attachmentSelection, attachmentOptions, timeFrameType } = this.model.report,\n newAttachmentOptions = isTabularReport\n ? attachmentOptions.includes(Csv)\n ? attachmentOptions\n : [...attachmentOptions, Csv]\n : attachmentOptions.filter((option: number) => option !== Csv),\n reportProperties = {\n isTabularReport,\n forcedTimeFrame,\n attachmentOptions: newAttachmentOptions,\n timeFrameType,\n attachmentSelection\n };\n\n // Update the selectable options from values that are not allowed for graphic reports.\n if (!isTabularReport) {\n reportProperties.timeFrameType = forcedTimeFrame as number;\n if (attachmentSelection === Csv) {\n reportProperties.attachmentSelection = None;\n }\n }\n\n setProperties(this.model.report, reportProperties);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BusinessActivityAnalyticsReportEdit': typeof BusinessActivityAnalyticsReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n\\n {{#if this.specificGroupsSelected}}\\n \\n {{/if}}\\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/self-guided-tours-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type SystemGroup from 'customer-site/models/systems/system-group';\nimport type ADCIntlService from 'customer-site/services/intl';\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\ntype SGTReportEditModel = ResolvedReportEditModel & {\n systemGroup: ADCAsyncStoreFindRecord;\n};\ninterface SelfGuidedToursReportEditArgs {\n Args: {\n model: SGTReportEditModel;\n };\n}\n\nexport default class SelfGuidedToursReportEdit extends Component {\n @service declare intl: ADCIntlService;\n\n constructor(owner: SelfGuidedToursReportEdit, args: SelfGuidedToursReportEditArgs['Args']) {\n super(owner, args);\n\n const group = this.systemGroup,\n groups = group?.isParentGroup ? group.childGroups : [group];\n // DO NOT COPY THIS, PLEASE IMPLEMENT THE SUGGESTION AND TEST.\n // @ts-expect-error TS doesn't like it when a const can be different types, we should split this into multiple statements.\n this.availableGroupIds = groups.map((group: SystemGroup) => group.id);\n this.specificGroupsSelected =\n !!this.report?.groupIds && !this.availableGroupIds.every((id) => this.report?.groupIds?.includes(id));\n }\n\n @alias('args.model.report')\n report?: BaseReport;\n\n @alias('args.model.systemGroup')\n systemGroup?: SystemGroup;\n\n /**\n * boolean value to indicate whether the specificGroups radio button is selected, indicating some of the available groups are selected.\n */\n @tracked\n specificGroupsSelected: boolean;\n\n @tracked\n availableGroupIds: string[];\n\n /**\n * Gets the two group categories for group selection.\n */\n @computed('specificGroupsSelected')\n get groupCategoryOptions(): BinaryListItem[] {\n const options = ['allGroups', 'specificGroups'];\n\n return options.map((translationKey, id) => {\n return new BinaryListItem({\n label: this.intl.t(`commercial.reports.edit.${translationKey}`),\n state: this.specificGroupsSelected ? id == 1 : id == 0,\n props: {\n id\n }\n });\n });\n }\n\n /**\n * Toggles the visibility of specific groups and resets the groupIds.\n */\n @action\n changedGroupCategorySelection(): void {\n this.specificGroupsSelected = !this.specificGroupsSelected;\n if (this.report) {\n set(this.report, 'groupIds', this.specificGroupsSelected ? [] : this.availableGroupIds);\n }\n }\n\n /**\n * Gets the available system groups.\n */\n @computed('report.groupIds', 'systemGroup')\n get groupOptions(): BinaryListItem[] {\n const group = this.systemGroup,\n groups = group?.isParentGroup ? group.childGroups : [group];\n\n // DO NOT COPY THIS, PLEASE IMPLEMENT THE SUGGESTION AND TEST.\n // @ts-expect-error TS doesn't like it when a const can be different types, we should split this into multiple statements.\n return groups.map((systemGroup) => {\n return new BinaryListItem({\n label: systemGroup?.description,\n state: this.report?.groupIds?.includes(systemGroup?.id ?? ''),\n props: {\n id: systemGroup?.id\n }\n });\n });\n }\n\n /**\n * Updates the selected GroupIds.\n */\n @action\n changedGroupSelection(groupOptions: BinaryListItem<{ id: string }>[]): void {\n const selectedIds = groupOptions.filter((item) => item.state).map((item) => item.props.id);\n if (this.report) {\n set(this.report, 'groupIds', selectedIds);\n }\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::SelfGuidedToursReportEdit': typeof SelfGuidedToursReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{tc this \\'learnMore\\'}}\\n
\\n

{{tc this \\'troubleConditions\\'}}

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

{{tc this \\'dataColumns\\'}}

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

{{tc this \\'frequency\\'}}

\\n {{#each this.frequencyButtons as |button|}}\\n
\\n \\n
\\n {{/each}}\\n \\n
\\n
\",{ moduleName: \"customer-site/components/commercial/reports/trouble-condition-details-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport CustomerKnowledgeBase from 'customer-site/enums/CustomerKnowledgeBase';\nimport TroubleConditionDetailsReportCategories from 'customer-site/enums/TroubleConditionDetailsReportCategories';\nimport TroubleConditionDetailsReportDataColumns from 'customer-site/enums/TroubleConditionDetailsReportDataColumns';\nimport TroubleConditionDetailsReportFrequency from 'customer-site/enums/TroubleConditionDetailsReportFrequency';\nimport TroubleConditionTypeEnum from 'customer-site/enums/TroubleConditionTypeEnum';\nimport { buildKnowledgeBaseURL } from 'customer-site/helpers/knowledge-base-link';\nimport { intlPath } from '@adc/i18n/path';\nimport CheckboxTreeItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/checkbox-tree-item';\n\nimport './_style.scss';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type ADCIntlService from 'customer-site/services/intl';\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\ninterface TroubleConditionDetailsReportEditSignature {\n Args: {\n model: ResolvedReportEditModel;\n };\n}\n\n@intlPath({ path: 'commercial/reports/trouble-condition-details-report-edit' })\nexport default class TroubleConditionDetailsReportEdit extends Component {\n @service declare contextManager: ContextManager;\n @service declare intl: ADCIntlService;\n\n constructor(owner: TroubleConditionDetailsReportEdit, args: TroubleConditionDetailsReportEditSignature['Args']) {\n super(owner, args);\n this.extraData = this.report?.extraData;\n this.initializeSelections();\n }\n\n @alias('args.model.report')\n report?: BaseReport;\n\n @tracked\n extraData?: string;\n\n @tracked\n troubleConditionSelections: string[] = [];\n\n @tracked\n dataColumnSelections: string[] = [];\n\n @tracked\n frequencySelection: string = '';\n\n @tracked\n troubleConditionCheckboxes = this.getTroubleConditionCheckboxes();\n\n @tracked\n dataColumnCheckboxes = this.getDataColumnCheckboxes();\n\n @tracked\n frequencyButtons = this.getFrequencyButtons();\n\n get knowledgeBaseURL() {\n return buildKnowledgeBaseURL(CustomerKnowledgeBase.PCTroubleConditionDetailsReport, this.contextManager);\n }\n\n initializeSelections(): void {\n const selectedValues = this.extraData ? this.extraData.split(',') : [];\n\n selectedValues.forEach((value) => {\n const intValue = Number(value);\n if (\n Object.values(TroubleConditionTypeEnum).includes(intValue) ||\n Object.values(TroubleConditionDetailsReportCategories).includes(intValue)\n ) {\n this.troubleConditionSelections.push(value);\n } else if (Object.values(TroubleConditionDetailsReportDataColumns).includes(intValue)) {\n this.dataColumnSelections.push(value);\n } else if (Object.values(TroubleConditionDetailsReportFrequency).includes(intValue)) {\n this.frequencySelection = value;\n }\n });\n\n const testError = this.report?.errors.errorsFor('troubleConditionError')[0];\n console.log(testError);\n\n // Update checkboxes with existing selections\n this.troubleConditionCheckboxes = this.getTroubleConditionCheckboxes();\n this.dataColumnCheckboxes = this.getDataColumnCheckboxes();\n this.frequencyButtons = this.getFrequencyButtons();\n }\n\n /**\n * Create checkboxes for trouble condition categories and indiivdual trouble conditions\n * @returns checkbox tree items of trouble condition categories and individual options\n */\n getTroubleConditionCheckboxes(): CheckboxTreeItem[] {\n const selectedValues = this.troubleConditionSelections,\n collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n\n return troubleConditionDetailsReportCategoryMap.map(({ category, conditions, resource }) => {\n const subitems = conditions\n .map((condition) => {\n const state =\n selectedValues.includes(condition.toString()) || selectedValues.includes(category.toString())\n ? SELECTED\n : UNSELECTED;\n return CheckboxTreeItem.create({\n name: this.intl.tc(this, TroubleConditionTypeEnum[condition]),\n value: condition.toString(),\n isSelectable: true,\n state\n });\n })\n .sort((a, b) => collator.compare(a.name, b.name));\n\n return CheckboxTreeItem.create({\n name: this.intl.tc(this, resource),\n value: category.toString(),\n isSelectable: true,\n subitems,\n isCollapsible: true,\n isCollapsed:\n subitems.every((tc) => tc.state === SELECTED) || subitems.every((tc) => tc.state === UNSELECTED)\n });\n });\n }\n\n /**\n * Create checkboxes for data column options\n * @returns checkbox tree items of data column options\n */\n getDataColumnCheckboxes(): CheckboxTreeItem[] {\n const selectedValues = this.dataColumnSelections;\n\n return dataColumns.map((value) => {\n const state = selectedValues.includes(value.toString()) ? SELECTED : UNSELECTED;\n\n return CheckboxTreeItem.create({\n name: this.intl.tc(this, TroubleConditionDetailsReportDataColumns[value]),\n value: value.toString(),\n isSelectable: true,\n state\n });\n });\n }\n\n /**\n * Create \"Daily\" and \"Weekly\" frequency options\n * @returns frequency button values\n */\n getFrequencyButtons(): Array<{ name: string; value: string }> {\n return Object.keys(TroubleConditionDetailsReportFrequency)\n .filter((key) => isNaN(Number(key)))\n .map((key) => ({\n name: this.intl.tc(this, key),\n value: TroubleConditionDetailsReportFrequency[\n key as keyof typeof TroubleConditionDetailsReportFrequency\n ].toString()\n }));\n }\n\n /**\n * Save all selections into extra data\n */\n updateExtraData(): void {\n const combinedSelections = [\n ...this.troubleConditionSelections,\n ...this.dataColumnSelections,\n this.frequencySelection\n ];\n\n this.report ? (this.report.extraData = combinedSelections.join(',')) : '';\n }\n\n /**\n * Gets the enum values of selected trouble conditions based on the checkbox tree that is passed in\n * @param checkboxTree the checkbox tree of trouble conditions and categories\n * @returns an array of the selected trouble condition or category enum values\n */\n getSelectedTroubleConditions(checkboxTree: CheckboxTreeItem[]): Array {\n const selectedValues = [];\n\n for (const categoryItem of checkboxTree) {\n const selectedSubitems = categoryItem.subitems.filter((subitem) => subitem.state === SELECTED);\n\n if (selectedSubitems.length === categoryItem.subitems.length) {\n // All subitems are selected, so we want to save the category enum to extraData instead of the individual values\n selectedValues.push(categoryItem.value);\n } else {\n // Not all trouble conditions of this category are selected, so save the individual values to extraData\n for (const subitem of selectedSubitems) {\n selectedValues.push(subitem.value);\n }\n }\n }\n\n return selectedValues;\n }\n\n /**\n * Gets the enum values of data columns based on the checkbox tree that is passed in\n * @param checkboxTree the checkbox tree of data column selection options\n * @returns an array of the selected data column enum values\n */\n getSelectedDataColumns(checkboxTree: CheckboxTreeItem[]): Array {\n const selectedValues = [];\n\n for (const item of checkboxTree) {\n if (item.state === SELECTED) {\n selectedValues.push(item.value);\n }\n }\n\n return selectedValues;\n }\n\n @action\n troubleConditionsChanged(checkboxTree: CheckboxTreeItem[]): void {\n this.troubleConditionSelections = this.getSelectedTroubleConditions(checkboxTree);\n this.updateExtraData();\n }\n\n @action\n dataColumnsChanged(checkboxTree: CheckboxTreeItem[]): void {\n this.dataColumnSelections = this.getSelectedDataColumns(checkboxTree);\n this.updateExtraData();\n }\n\n @action\n frequencyChanged(value: string): void {\n this.frequencySelection = value;\n this.updateExtraData();\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::TroubleConditionDetailsReportEdit': typeof TroubleConditionDetailsReportEdit;\n }\n}\n\nexport const BatteryTroubleConditions = [\n TroubleConditionTypeEnum.PanelLowBattery,\n TroubleConditionTypeEnum.SensorLowBattery\n];\n\nexport const HVACTroubleConditions = [\n TroubleConditionTypeEnum.HeatingAndCoolingAlert,\n TroubleConditionTypeEnum.HVACControlFailure,\n TroubleConditionTypeEnum.SevereHVACAlert,\n TroubleConditionTypeEnum.ThermostatTooCold,\n TroubleConditionTypeEnum.ThermostatTooWarm\n];\n\nexport const MiscDeviceTroubleConditions = [\n TroubleConditionTypeEnum.ACFailure,\n TroubleConditionTypeEnum.LockJammed,\n TroubleConditionTypeEnum.SecureEnrollmentFailed,\n TroubleConditionTypeEnum.SensorMalfunction,\n TroubleConditionTypeEnum.GeoDeviceMalfunction,\n TroubleConditionTypeEnum.CarConnectorMalfunction,\n TroubleConditionTypeEnum.SensorTamper\n];\n\nexport const PanelOrHubTroubleConditions = [\n TroubleConditionTypeEnum.BatteryAbsent,\n TroubleConditionTypeEnum.BroadbandCommFailure,\n TroubleConditionTypeEnum.CellCommFailure,\n TroubleConditionTypeEnum.EmptyEquipmentList,\n TroubleConditionTypeEnum.ModuleMalfunction,\n TroubleConditionTypeEnum.PanelNotResponding,\n TroubleConditionTypeEnum.PanelTamper,\n TroubleConditionTypeEnum.PoorSignaling,\n TroubleConditionTypeEnum.ZWaveRadioTrouble\n];\n\nexport const VideoTroubleConditions = [\n TroubleConditionTypeEnum.CameraNotReachable,\n TroubleConditionTypeEnum.DevicePowerIssue,\n TroubleConditionTypeEnum.UploadsOverQuota,\n TroubleConditionTypeEnum.VideoDeviceFirmwareOutdated,\n TroubleConditionTypeEnum.VideoDeviceHardwareMalfunction,\n TroubleConditionTypeEnum.VideoObjectDetectionRuleNotConfigured\n];\n\nexport const WaterTroubleConditions = [\n TroubleConditionTypeEnum.DailyFlowEvent,\n TroubleConditionTypeEnum.ExtremeWaterTemp,\n TroubleConditionTypeEnum.HardwareFailure,\n TroubleConditionTypeEnum.LargeLeak,\n TroubleConditionTypeEnum.MediumLeak,\n TroubleConditionTypeEnum.PeriodicLeak,\n TroubleConditionTypeEnum.SmallLeak,\n TroubleConditionTypeEnum.WaterAlert\n];\n\nconst excludedTroubleConditions = [\n TroubleConditionTypeEnum.AllTroubles,\n TroubleConditionTypeEnum.CustomerNotLoggedIn,\n TroubleConditionTypeEnum.InvalidPrimaryEmail,\n TroubleConditionTypeEnum.NoArmings,\n TroubleConditionTypeEnum.SetupNotComplete,\n TroubleConditionTypeEnum.CoolingAlert,\n TroubleConditionTypeEnum.HeatingAlert,\n TroubleConditionTypeEnum.SevereCoolingAlert,\n TroubleConditionTypeEnum.SevereHeatingAlert\n];\n\nconst categorizedTroubleConditions = [\n ...BatteryTroubleConditions,\n ...HVACTroubleConditions,\n ...MiscDeviceTroubleConditions,\n ...PanelOrHubTroubleConditions,\n ...VideoTroubleConditions,\n ...WaterTroubleConditions\n];\n\nconst allTroubleConditions: TroubleConditionTypeEnum[] = Object.values(TroubleConditionTypeEnum).filter(\n (value): value is TroubleConditionTypeEnum => typeof value === 'number'\n);\n\nexport const OtherTroubleConditions: TroubleConditionTypeEnum[] = allTroubleConditions.filter(\n (tc) => !categorizedTroubleConditions.includes(tc) && !excludedTroubleConditions.includes(tc)\n);\n\nconst troubleConditionDetailsReportCategoryMap = [\n {\n category: TroubleConditionDetailsReportCategories.BatteryConditions,\n conditions: BatteryTroubleConditions,\n resource: 'BatteryConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.HVACConditions,\n conditions: HVACTroubleConditions,\n resource: 'HVACConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.MiscDeviceConditions,\n conditions: MiscDeviceTroubleConditions,\n resource: 'MiscDeviceConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.PanelOrHubConditions,\n conditions: PanelOrHubTroubleConditions,\n resource: 'PanelOrHubConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.VideoConditions,\n conditions: VideoTroubleConditions,\n resource: 'VideoConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.WaterConditions,\n conditions: WaterTroubleConditions,\n resource: 'WaterConditions'\n },\n {\n category: TroubleConditionDetailsReportCategories.OtherConditions,\n conditions: OtherTroubleConditions,\n resource: 'OtherConditions'\n }\n];\n\nconst dataColumns = [\n TroubleConditionDetailsReportDataColumns.CommunityRegion,\n TroubleConditionDetailsReportDataColumns.GroupName,\n TroubleConditionDetailsReportDataColumns.UnitName,\n TroubleConditionDetailsReportDataColumns.CustomerId,\n TroubleConditionDetailsReportDataColumns.TroubleConditionCategory,\n TroubleConditionDetailsReportDataColumns.TroubleCondition,\n TroubleConditionDetailsReportDataColumns.TroubleConditionStartDate,\n TroubleConditionDetailsReportDataColumns.AffectedDeviceType,\n TroubleConditionDetailsReportDataColumns.AffectedDeviceName\n];\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n <:label as |item|>\\n \\n \\n \\n\\n\",{ moduleName: \"customer-site/components/commercial/reports/trouble-condition-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { alias, reads } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport {\n ACFailure,\n PanelNotResponding,\n PanelLowBattery,\n SensorMalfunction,\n SensorLowBattery,\n SevereHVACAlert,\n Other\n} from 'customer-site/enums/TroubleConditionReportOptions';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport './_style.scss';\nimport type { ErrorPayload } from '@adc/template-helpers/helpers/validation-error';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\n/**\n * Mapping from TroubleConditionReportOptions enums to strings\n */\nconst troubleConditionTypeResources = {\n [ACFailure]: 'ACFailure',\n [PanelNotResponding]: 'PanelNotResponding',\n [PanelLowBattery]: 'PanelLowBattery',\n [SensorMalfunction]: 'SensorMalfunction',\n [SensorLowBattery]: 'SensorLowBattery',\n [SevereHVACAlert]: 'SevereHVACAlert',\n [Other]: 'Other'\n};\n\n/**\n * The order of TroubleConditionReportOptions to display in the checklist\n */\nconst TroubleConditionReportOptionsOrdered: (keyof typeof troubleConditionTypeResources)[] = [\n ACFailure,\n PanelNotResponding,\n PanelLowBattery,\n SensorMalfunction,\n SensorLowBattery,\n SevereHVACAlert,\n Other\n] as const;\n\ninterface TroubleConditionTrendsReportEditSignature {\n Args: {\n model: {\n report: BaseReport;\n };\n };\n}\n\n@intlPath({ path: 'commercial.reports.trouble-condition-report-edit' })\nexport default class TroubleConditionTrendsReportEdit extends Component {\n @service declare intl: ServiceRegistry['adc-intl'];\n\n @alias('args.model.report.extraData')\n declare extraData: typeof TroubleConditionReportOptionsOrdered;\n\n @reads('args.model.report.errors.extraData')\n errorPayload?: ErrorPayload;\n\n @cached\n get checkboxItems(): BinaryListItem<{\n type: (typeof TroubleConditionReportOptionsOrdered)[0];\n text: string;\n }>[] {\n return TroubleConditionReportOptionsOrdered.map((type) => {\n const { intl, extraData } = this,\n key = troubleConditionTypeResources[type];\n\n return new BinaryListItem({\n label: intl.tc(this, key),\n state: extraData.includes(type),\n props: {\n type,\n text: intl.tc(this, `${key}Tooltip`)\n }\n });\n });\n }\n\n @action\n itemChanged(items: TroubleConditionTrendsReportEdit['checkboxItems']): void {\n this.extraData = items.filter(({ state }) => state).map(({ props }) => props.type);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::TroubleConditionReportEdit': typeof TroubleConditionTrendsReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n\",{ moduleName: \"customer-site/components/commercial/reports/show-user-attributes/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\n\ntype ShowUserAttributesArgs = {\n showUserAttributes: boolean;\n updateShowUserAttributes: (showUserAttributes: boolean) => void;\n};\n\n@intlPath({ path: 'commercial/reports/show-user-attributes' })\nexport default class ShowUserAttributes extends Component {\n @service declare intl: ADCIntlService;\n\n /**\n * The options for whether to include user information in the CSV.\n */\n @computed('args.showUserAttributes')\n get userAttributeOptions(): BinaryListItem[] {\n return [\n new BinaryListItem({\n label: this.intl.t('generic.yes'),\n state: this.args.showUserAttributes\n }),\n new BinaryListItem({\n label: this.intl.t('generic.no'),\n state: !this.args.showUserAttributes\n })\n ];\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::ShowUserAttributes': typeof ShowUserAttributes;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n <:content as |item|>\\n {{#if item.props.showSchedulePicker}}\\n \\n {{/if}}\\n \\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/user-activity-report-edit/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 { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { ExtraDataKeyEnum } from 'customer-site/classes/commercial/reports/edit/extra-data-route';\nimport { updateReportExtraData } from 'customer-site/commercial/reports/edit/user-activity-report/route';\nimport { dayArrayToBits, dayBitsToArray } from 'customer-site/utils/datetime';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type { SchedulePickerSignature } from '@adc/ui-components/components/schedule-picker';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\ninterface UserActivityReportEditSignature {\n Args: {\n model: { data: { report: BaseReport } };\n };\n}\n\nenum IncludeInPersonDays {\n Yes,\n No\n}\n\n@intlPath({ path: 'commercial/reports/user-activity-report-edit' })\nexport default class UserActivityReportEdit extends Component {\n @service declare intl: ADCIntlService;\n\n constructor(owner: UserActivityReportEdit, args: UserActivityReportEditSignature['Args']) {\n super(owner, args);\n\n // Parse the extra data string and set the initial values.\n const extraDataParams = new URLSearchParams(this.report.extraData);\n this.expectedInPersonDayBits = Number(extraDataParams.get(ExtraDataKeyEnum.ExpectedInPersonDays));\n this.showUserAttributes = JSON.parse(\n extraDataParams.get(ExtraDataKeyEnum.ShowUserAttributes)?.toLowerCase() ?? 'false'\n );\n this.expectedInPersonDays = dayBitsToArray(this.expectedInPersonDayBits);\n this.includeExpectedInPersonDays = this.expectedInPersonDayBits !== 0;\n }\n\n /**\n * Whether to show user attributes in the report CSV.\n */\n @tracked\n declare showUserAttributes: boolean;\n\n /**\n * The day bits for the expected in-person days extra data value.\n */\n @tracked\n declare expectedInPersonDayBits: number;\n\n /**\n * Rport model that is currently being edited.\n */\n @alias('args.model.report')\n declare report: BaseReport;\n\n /**\n * The currently selected list of expected in-person days.\n */\n @tracked\n declare expectedInPersonDays: number[];\n\n /**\n * Whether we are including expected in-person days.\n */\n @tracked\n declare includeExpectedInPersonDays: boolean;\n\n /**\n * List of options for the expected in-person days input.\n */\n @computed('includeExpectedInPersonDays')\n get includeExpectedInPersonDayItems(): BinaryListItem<{ id: number; showSchedulePicker: boolean }>[] {\n const { includeExpectedInPersonDays, intl } = this;\n return [\n new BinaryListItem({\n label: intl.t('generic.no'),\n state: !includeExpectedInPersonDays,\n props: {\n id: IncludeInPersonDays.No,\n showSchedulePicker: false\n }\n }),\n new BinaryListItem({\n label: intl.t('generic.yes'),\n state: includeExpectedInPersonDays,\n props: {\n id: IncludeInPersonDays.Yes,\n showSchedulePicker: true\n }\n })\n ];\n }\n\n /**\n * Update the show user attributes option and the extra data value on the report.\n */\n @action\n updateShowUserAttributes(showUserAttributes: boolean): void {\n this.showUserAttributes = showUserAttributes;\n this.updateExtraData();\n }\n\n /**\n * Update whether to include expected in-person days and set the extra data value.\n */\n @action\n updateIncludeExpectedInPersonDays(expectedInPersonDayItems: BinaryListItem<{ id: IncludeInPersonDays }>[]): void {\n this.includeExpectedInPersonDays =\n expectedInPersonDayItems.findBy('state')?.props.id === IncludeInPersonDays.Yes;\n\n // Set the expected in-person day bits.\n if (!this.includeExpectedInPersonDays) {\n this.expectedInPersonDayBits = 0;\n }\n\n this.updateExtraData();\n }\n\n /**\n * Update the specified expected in-person days and extra data value on the report.\n */\n @action\n updateExpectedInPersonDays(value: Parameters[0]): void {\n this.expectedInPersonDays = value.selectedDays ?? [];\n\n // Set the expected activity day bits.\n const dayBits = dayArrayToBits(this.expectedInPersonDays);\n this.expectedInPersonDayBits = dayBits === 0 ? -1 : dayBits;\n\n this.updateExtraData();\n }\n\n /**\n * Update the extra data value on the report.\n */\n updateExtraData(): void {\n updateReportExtraData(this.report, {\n [ExtraDataKeyEnum.ShowUserAttributes]: this.showUserAttributes,\n [ExtraDataKeyEnum.ExpectedInPersonDays]: this.expectedInPersonDayBits\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::UserActivityReportEdit': typeof UserActivityReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/user-summary-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { ShowUserCredentials, DoNotShowUserCredentials } from 'customer-site/enums/UserSummaryReportOptions';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\n\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\nexport interface UserSummaryReportEditSignature {\n Element: HTMLDivElement;\n Args: {\n model: {\n report: BaseReport;\n };\n };\n}\n\nexport default class UserSummaryReportEdit extends Component {\n @service declare intl: ServiceRegistry['adc-intl'];\n\n @alias('args.model.report.extraData')\n extraDataString?: string;\n\n @cached\n get includeUserCredentialsItems(): BinaryListItem<{ v: string }>[] {\n return [\n ['generic.yes', String(ShowUserCredentials)],\n ['generic.no', String(DoNotShowUserCredentials)]\n ].map(([key, v]: [string, string]) => {\n // Parse the extraData string. If there's no value for usro (user summary report option), then the default value is to not show user credentials\n const extraDataString =\n new URLSearchParams(this.extraDataString).get('usro') ?? String(DoNotShowUserCredentials);\n return new BinaryListItem({\n label: this.intl.t(key),\n state: extraDataString === v,\n props: {\n v\n }\n });\n });\n }\n\n @action\n changedIncludeUserCredentials(items: UserSummaryReportEdit['includeUserCredentialsItems']): void {\n const item = items.find((item) => item.state),\n extraDataString = new URLSearchParams(this.extraDataString);\n if (item) {\n // Set the usro (user summary report option) property depending on what radio item was chosen\n extraDataString.set('usro', item.props.v);\n set(this, 'extraDataString', String(extraDataString));\n }\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::UserSummaryReportEdit': typeof UserSummaryReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n <:content as |item|>\\n {{#if item.props.showSnapshotOptions}}\\n \\n {{/if}}\\n \\n \\n \\n
\",{ moduleName: \"customer-site/components/commercial/reports/video-health-report-edit/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport {\n FullReport,\n DisplaySummarySectionOnly,\n HideSnapshotsSetting\n} from '../../../../enums/VideoHealthReportExtraData';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\ninterface VideoHealthReportEditSignature {\n Args: {\n model: ResolvedReportEditModel;\n };\n}\n\n@intlPath({ path: 'commercial/reports/video-health-report-edit' })\nexport default class VideoHealthReportEdit extends Component {\n @service declare intl: ADCIntlService;\n\n /**\n * String versions of the VideoHealthReportExtraData enum values.\n */\n extraDataOptions: Record = {\n fullReport: FullReport.toString(),\n displaySummarySectionOnly: DisplaySummarySectionOnly.toString(),\n hideSnapshotsSetting: HideSnapshotsSetting.toString()\n };\n\n /**\n * The resolved Video Health Report model.\n */\n @alias('args.model')\n declare model: ResolvedReportEditModel;\n\n /**\n * True if the 'Summary Only' option is selected from the summary or full report selection toggle.\n */\n @computed('model.report.extraData', 'extraDataOptions.displaySummarySectionOnly')\n get displaySummarySectionOnly(): boolean {\n return this.model.report.extraData === this.extraDataOptions.displaySummarySectionOnly;\n }\n\n /**\n * True if the 'Hide Snapshots' option is selected from the summary or full report selection toggle.\n */\n @computed('model.report.extraData', 'extraDataOptions.hideSnapshotsSetting')\n get hideSnapshots(): boolean {\n return this.model.report.extraData === this.extraDataOptions.hideSnapshotsSetting;\n }\n\n /**\n * The options for the summary or full report selection toggle.\n */\n @computed('displaySummarySectionOnly')\n get summaryOrDetailOptions(): BinaryListItem<{ showSnapshotOptions: boolean }>[] {\n const { displaySummarySectionOnly, intl } = this;\n return [\n new BinaryListItem({\n label: intl.tc(this, 'summaryAndDetails'),\n state: !displaySummarySectionOnly,\n props: {\n showSnapshotOptions: true\n }\n }),\n new BinaryListItem({\n label: intl.tc(this, 'summaryOnly'),\n state: displaySummarySectionOnly,\n props: {\n showSnapshotOptions: false\n }\n })\n ];\n }\n\n /**\n * The options for selecting to display or hide snapshots in the Video Health Report.\n */\n @computed('hideSnapshots')\n get snapshotOptions() {\n const { hideSnapshots, intl } = this;\n return [\n new BinaryListItem({\n label: intl.tc(this, 'showSnapshots'),\n state: !hideSnapshots\n }),\n new BinaryListItem({\n label: intl.tc(this, 'hideSnapshots'),\n state: hideSnapshots\n })\n ];\n }\n\n /**\n * Sets displaySummarySectionOnly based on the current selection for using Summary and Details or Summary Only.\n */\n @action\n changedDisplaySummarySectionOnly() {\n // If the current login doesn't have live view permissions, we always want to default to the Summary & Details option without snapshots.\n const { extraDataOptions, model } = this,\n summaryAndDetailsOption = model.canViewLiveVideo\n ? extraDataOptions.fullReport\n : extraDataOptions.hideSnapshotsSetting;\n set(\n this.model.report,\n 'extraData',\n this.displaySummarySectionOnly ? summaryAndDetailsOption : extraDataOptions.displaySummarySectionOnly\n );\n }\n\n /**\n * Sets hideSnapshots based on the current selection.\n */\n @action\n changedShowHideSnapshots() {\n set(\n this.model.report,\n 'extraData',\n this.hideSnapshots ? this.extraDataOptions.fullReport : this.extraDataOptions.hideSnapshotsSetting\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::VideoHealthReportEdit': typeof VideoHealthReportEdit;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\",{ moduleName: \"customer-site/components/commercial/reports/base-report-edit-selector/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport {\n AccessHistoryReport,\n AlarmsIssuesReport,\n UserSummaryReport,\n VideoHealthReport,\n CrowdGatheringReport,\n LineMonitoringReport,\n OccupancyPlusPeopleCountingReport,\n PeopleCountingReport,\n TroubleConditionTrendsReport,\n TroubleConditionDetailsReport,\n BatteryLevelReport,\n UserActivityReport,\n UnattendedShowingsReport\n} from 'customer-site/enums/CustomerNotificationType';\nimport AccessHistoryReportEdit from '../access-history-report-edit';\nimport AlarmsIssuesReportEdit from '../alarms-issues-report-edit';\nimport BatteryLevelReportEdit from '../battery-level-report-edit';\nimport BusinessActivityAnalyticsReportEdit from '../business-activity-analytics-report-edit';\nimport UnattendedShowingsReportEdit from '../self-guided-tours-report-edit';\nimport TroubleConditionDetailsReportEdit from '../trouble-condition-details-report-edit';\nimport TroubleConditionTrendsReportEdit from '../trouble-condition-report-edit';\nimport UserActivityReportEdit from '../user-activity-report-edit';\nimport UserSummaryReportEdit from '../user-summary-report-edit';\nimport VideoHealthReportEdit from '../video-health-report-edit';\n\nimport type { ResolvedReportEditModel } from '../report-edit-route/index';\n\nexport default class BaseReportEditSelector extends Component<{ model: ResolvedReportEditModel }> {\n @alias('args.model.report.notificationType')\n declare notificationType: number;\n\n /**\n * Maps the notification type to the path to its corresponding edit component.\n */\n @computed()\n get notificationTypeToComponentMap(): Record> {\n return {\n [AccessHistoryReport]: AccessHistoryReportEdit,\n [AlarmsIssuesReport]: AlarmsIssuesReportEdit,\n [UserSummaryReport]: UserSummaryReportEdit,\n [VideoHealthReport]: VideoHealthReportEdit,\n [TroubleConditionTrendsReport]: TroubleConditionTrendsReportEdit,\n [TroubleConditionDetailsReport]: TroubleConditionDetailsReportEdit,\n [BatteryLevelReport]: BatteryLevelReportEdit,\n [CrowdGatheringReport]: BusinessActivityAnalyticsReportEdit,\n [LineMonitoringReport]: BusinessActivityAnalyticsReportEdit,\n [OccupancyPlusPeopleCountingReport]: BusinessActivityAnalyticsReportEdit,\n [PeopleCountingReport]: BusinessActivityAnalyticsReportEdit,\n [UserActivityReport]: UserActivityReportEdit,\n [UnattendedShowingsReport]: UnattendedShowingsReportEdit\n };\n }\n\n @computed('notificationType', 'notificationTypeToComponentMap.[]')\n get componentToRender(): typeof Component {\n return this.notificationTypeToComponentMap[this.notificationType] ?? '';\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::BaseReportEditSelector': typeof BaseReportEditSelector;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n {{#each this.emailAddressInputs as |input index|}}\\n \\n
\\n \\n \\n
\\n \\n {{/each}}\\n\\n {{#if this.displayAddEmailButton}}\\n \\n \\n \\n {{/if}}\\n\",{ moduleName: \"customer-site/components/action-sheets/commercial/reports/recipients/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 { alias, bool, lt } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { English_US } from 'customer-site/enums/Culture';\nimport { processValidationErrorsFromResponse } from '@adc/ajax/utils/validation-error-processing';\nimport { intlPath } from '@adc/i18n/path';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\n\nimport type { ApiError } from '@adc/ajax/services/adc-ajax';\nimport './_style.scss';\nimport type LocaleModel from '@adc/app-infrastructure/models/locale';\nimport type { AsyncHasMany } from '@ember-data/model';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type BaseUser from 'customer-site/models/users/base-user';\nimport type EmailAddress from 'customer-site/models/users/email-address';\n\ninterface ActionSheetsCommercialReportsRecipientsSignature {\n Args: {\n isActive: boolean;\n close: VoidFunction;\n getNewRecipients(recipientEmails: EmailAddress[], firstName: string, lastName: string): Promise;\n };\n}\n\ninterface EmailAddressInputProps {\n hasError: boolean;\n input?: string;\n errorMessage: string;\n}\n\n@intlPath({ path: 'action-sheets/commercial/reports/recipients' })\nexport default class ActionSheetsCommercialReportsRecipients extends Component {\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare identityManager: ServiceRegistry['identity-manager'];\n @service declare notificationManager: ServiceRegistry['notification-manager'];\n @service declare store: ServiceRegistry['store'];\n\n @tracked\n firstNameInput = '';\n\n @tracked\n lastNameInput = '';\n\n /**\n * Holds the ID value of the selected language. Default is English\n */\n @tracked\n localeId = English_US;\n\n @tracked\n errorMessage = '';\n\n /**\n * Holds error value for the first name input\n */\n @tracked\n firstName = '';\n\n /**\n * Holds error value for the last name input\n */\n @tracked\n lastName = '';\n\n /**\n * Holds error value for the email input\n */\n @tracked\n address = '';\n\n /**\n * Holds the user/recipient that will be created\n */\n @tracked\n user?: BaseUser;\n\n /**\n * Holds each of the email inputs on the action sheet\n */\n @tracked\n emailAddressInputs: EmailAddressInputProps[] = [];\n\n /**\n * The max amount of emails we can add to a recipient is 3, so we should hide the ability to add more\n * when we've reached the limit\n */\n @lt('emailAddressInputs.length', 3)\n declare displayAddEmailButton: boolean;\n\n /**\n * If the account is access control then we need to create an access control user when a recipient is created. Otherwise, we'd create a BaseUser\n */\n @bool('identityManager.identityModel.isAccessControl')\n declare isAccessControl: boolean;\n\n /**\n * All the culture options that are available to the new recipient\n */\n @alias('identityManager.identityModel.profile.availableLocales')\n declare availableLocales: AsyncHasMany;\n\n /**\n * Creates an email address input field that's added to our tracked array and rendered on the template\n */\n @action\n createEmailAddressInput(): void {\n const emailAddressInput: EmailAddressInputProps = {\n hasError: false,\n input: '',\n errorMessage: ''\n };\n this.emailAddressInputs = [...this.emailAddressInputs, emailAddressInput];\n }\n\n /**\n * Deletes an email input from the list of email inputs based on the index where the delete button was clicked\n */\n @action\n deleteEmailAddressInput(index: number): void {\n this.emailAddressInputs = [...this.emailAddressInputs.filter((_, idx) => idx !== index)];\n }\n\n /**\n * Array of culture options as drop down items.\n */\n @computed('availableLocales', 'localeId')\n get availableLocaleOptions(): Array {\n const availableLocales = this.availableLocales,\n currentLocale = this.localeId;\n\n return availableLocales.map((locale) => {\n return DropdownSelectItem.create({\n name: locale.displayName,\n value: locale.id,\n state: currentLocale === parseInt(locale.id, 10) ? SELECTED : UNSELECTED\n });\n });\n }\n\n /**\n * This returns the array index of the email input that threw an error, so the template knows which input to display the error message.\n */\n @computed('address', 'emailAddressInputs')\n get emailInputWithError(): number | void {\n const { emailAddressInputs } = this;\n for (let i = 0; i < emailAddressInputs.length; i++) {\n if (emailAddressInputs[i].hasError) {\n // Toggle the email status again so that the error message doesn't display under the same input on subsequent attempts to add an email\n this.toggleEmailInputErrorStatus(i);\n return i;\n }\n }\n }\n\n /**\n * Toggles the error status of an email input field. This gets called whenever an error is about to be output in order to prevent the error\n * status from being carried over on subsequent attempts to save an email record\n */\n @action\n toggleEmailInputErrorStatus(index: number): void {\n this.emailAddressInputs[index].hasError = !this.emailAddressInputs[index].hasError;\n }\n\n @action\n async createRecipient(): Promise {\n const {\n intl,\n notificationManager,\n args: { getNewRecipients },\n isAccessControl\n } = this,\n createdFromReportsPage = true;\n\n this.user = this.store.createRecord(isAccessControl ? 'access-control/access-control-user' : 'users/user', {\n firstName: this.firstNameInput,\n lastName: this.lastNameInput,\n localeId: this.localeId,\n createdFromReportsPage\n });\n\n const emailRecords = this.emailAddressInputs.map((email) =>\n this.store.createRecord('users/email-address', {\n user: this.user,\n address: email.input,\n createdFromReportsPage\n })\n );\n\n try {\n // Attempt to save the user and email record we've created from the text input\n await this.user.save();\n await Promise.all(\n emailRecords.map(async (email, index) => {\n await email.save().catch((err) => {\n // Indicate which email caused the error so we can display an error message under it\n this.toggleEmailInputErrorStatus(index);\n throw err;\n });\n })\n );\n\n // Reload the dropdown items to include the created recipient\n await getNewRecipients(emailRecords, this.user.firstName, this.user.lastName);\n this.clearInputsAndCloseActionSheet();\n notificationManager.addSuccess(intl.tc(this, 'recipientWasCreated'));\n } catch (error) {\n // Destroy the records so they don't appear on the Users page\n const userAddresses = await this.user.contactAddresses;\n userAddresses.forEach(async (address) => {\n await address.destroyRecord();\n });\n\n await this.user.destroyRecord();\n\n // Clear error messages so the error tool tip will show up on subsequent errors\n this.clearErrorMessages();\n\n // Go through the error messages and add them to the notification manager\n (error.errors as ApiError[]).forEach((err) => this.notificationManager.addError(err.detail));\n // Process the validation errors we get from the back end and store them in the correct ember property\n processValidationErrorsFromResponse.call(this, error);\n\n throw error;\n }\n }\n\n /**\n * We need to reset the input values whenever the action sheet is closed to prevent anything carrying over\n */\n @action\n clearInputsAndCloseActionSheet(): void {\n // Always clear the current input values and error messages to avoid them carrying over the next time the action sheet is called\n this.clearInputValues();\n // Call the close method we passed into the template to exit the action sheet\n this.args.close();\n }\n\n /**\n * Resets the input variables to their default values\n */\n clearInputValues(): void {\n this.firstNameInput = this.lastNameInput = '';\n this.emailAddressInputs = [];\n this.localeId = English_US;\n }\n\n /**\n * Resets error messages so they appear on subsequent errors\n */\n clearErrorMessages(): void {\n this.firstName = this.lastName = this.address = '';\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'ActionSheets::Commercial::Reports::Recipients': typeof ActionSheetsCommercialReportsRecipients;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n
\\n

{{this.report.notificationTypeName}}

\\n

{{this.report.notificationDescription}}

\\n
\\n\\n \\n \\n \\n\\n \\n\\n {{#if this.hasCustomEditRoute}}\\n \\n {{/if}}\\n\\n {{#if this.isOpenCloseReport}}\\n \\n {{/if}}\\n\\n {{#if this.shouldShowTimeFrame}}\\n \\n {{#if this.timeFrameResourceName}}\\n
\\n

{{t (concat \\'commercial.reports.edit.reportRuns\\' this.timeFrameResourceName)}}

\\n
\\n {{else}}\\n \\n {{/if}}\\n
\\n {{/if}}\\n\\n \\n
\\n \\n
\\n
\\n\\n {{#if this.retrieveRecipientsTask.isRunning}}\\n \\n {{else}}\\n \\n {{#if recipientItems.length}}\\n \\n \\n \\n {{else}}\\n \\n {{/if}}\\n \\n {{/if}}\\n\\n \\n \\n \\n
\\n\",{ moduleName: \"customer-site/components/commercial/reports/report-edit-route/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed, set } from '@ember/object';\nimport { alias, bool, mapBy, equal } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { task } from 'ember-concurrency';\nimport AvailableSystemItemsFilteringEnum from 'customer-site/enums/AvailableSystemItemsFilteringEnum';\nimport {\n AccessHistoryReport,\n AlarmsIssuesReport,\n BatteryLevelReport,\n CrowdGatheringReport,\n LineMonitoringReport,\n LocationOpenCloseReport,\n OccupancyPlusPeopleCountingReport,\n PeopleCountingReport,\n ResidentSmartHomeActivityReport,\n TroubleConditionTrendsReport,\n TroubleConditionDetailsReport,\n UserActivityReport,\n UserSummaryReport,\n VideoHealthReport,\n UnattendedShowingsReport\n} from 'customer-site/enums/CustomerNotificationType';\nimport {\n ArmingSupervisionFault,\n CommercialClosedOnTime,\n CommercialClosedUnexpectedly,\n CommercialEarlyClose,\n CommercialEarlyOpen,\n CommercialLateClose,\n CommercialLateOpen,\n CommercialOpenOnTime,\n DisarmingSupervisionFault\n} from 'customer-site/enums/EventType';\nimport { None, Pdf, Csv } from 'customer-site/enums/ReportAttachmentSelection';\nimport { LastDay, LastMonth, LastWeek, Today } from 'customer-site/enums/ReportTimeframeType';\nimport {\n NoRecipientsSelected,\n NoUnitsWithBusinessHours,\n SomeUnitsWithBusinessHours\n} from 'customer-site/enums/ReportValidationIssue';\nimport { POST } from '@adc/ajax/services/adc-ajax';\nimport { sentryWithScopeAndError } from '@adc/app-infrastructure/utils/sentry';\nimport { intlPath } from '@adc/i18n/path';\nimport { BinaryListItem } from '@adc/ui-components/components/simple-binary/list';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\nimport { hash } from 'rsvp';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type {\n DeviceItem,\n ReportEditModel,\n ReportEditModelData\n} from 'customer-site/classes/commercial/reports/edit/base-report-edit-route';\nimport type { SelectionResult } from 'customer-site/components/action-sheets/enterprise/locations/location-selection/helpers/selection-items';\nimport type { LocationSelectionActionSheetProperties } from 'customer-site/components/action-sheets/enterprise/locations/location-selection/index';\nimport type { ReportItemSelectionSignature } from 'customer-site/components/commercial/report-item-selection';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\nimport type SystemGroup from 'customer-site/models/systems/system-group';\nimport type EmailAddress from 'customer-site/models/users/email-address';\nimport type OvRule from 'customer-site/models/video/ov-rule';\nimport type OvRuleGroup from 'customer-site/models/video/ov-rule-group';\n\ntype ReportEditRouteSignature = {\n Args: {\n model: ReportEditModel;\n reportRoute: number;\n };\n};\n\ntype Recipient = {\n address: string;\n firstName: string;\n lastName: string;\n};\n\ntype RecipientRecordMapping = {\n [contactAddressId: string]: Recipient;\n};\n\nexport type ResolvedReportEditModel = {\n report: BaseReport;\n devicesByType: DeviceItem[];\n // Video Health Report\n canViewLiveVideo?: boolean;\n // Business Activity Analytics Reports\n rules?: OvRule[];\n ruleGroups?: OvRuleGroup[];\n systemGroup?: SystemGroup;\n};\n\nexport const locationOpenCloseEventTypes: [number, string][] = [\n [CommercialEarlyOpen, 'commercialEarlyOpen'],\n [CommercialClosedUnexpectedly, 'commercialClosedUnexpectedly'],\n [CommercialEarlyClose, 'commercialEarlyClose'],\n [CommercialLateOpen, 'commercialLateOpen'],\n [CommercialLateClose, 'commercialLateClose'],\n [DisarmingSupervisionFault, 'disarmingSupervisionFault'],\n [ArmingSupervisionFault, 'armingSupervisionFault'],\n [CommercialOpenOnTime, 'commercialOpenOnTime'],\n [CommercialClosedOnTime, 'commercialClosedOnTime']\n];\n\n@intlPath({ path: 'commercial/reports/report-edit-route' })\nexport default class ReportEditRoute extends Component {\n @service declare ajax: ServiceRegistry['ajax'];\n @service declare identityManager: ServiceRegistry['identity-manager'];\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare modals: ServiceRegistry['modals'];\n @service declare navigation: ServiceRegistry['navigation'];\n @service declare notificationManager: ServiceRegistry['notification-manager'];\n @service declare store: ServiceRegistry['store'];\n\n @tracked selectedLocationIds = [];\n\n constructor(owner: ReportEditRoute, args: ReportEditRouteSignature['Args']) {\n super(owner, args);\n this.retrieveRecipientsTask.perform();\n }\n\n /**\n * Mapping from attachment type enums to strings.\n */\n attachmentTypes: Record = {\n [None]: 'attachmentTypeNone',\n [Pdf]: 'attachmentTypePdf',\n [Csv]: 'attachmentTypeCsv'\n };\n\n /**\n * Mapping between the ReportValidationIssues enums and the corresponding resource key\n */\n resourceForIssues: Record = {\n [NoRecipientsSelected]: 'noRecipientsSelected',\n [NoUnitsWithBusinessHours]: 'noBusinessHours',\n [SomeUnitsWithBusinessHours]: 'someBusinessHours'\n };\n\n @computed(\n 'isLocationSelectionActionSheetOpen',\n 'closeLocationSelectionActionSheet',\n 'report.{id,locationIds,notificationType}'\n )\n get locationSelectionActionSheetProperties(): {\n properties: LocationSelectionActionSheetProperties;\n close: (result: SelectionResult) => void;\n } {\n return {\n properties: {\n includeGroups: false,\n filterType: AvailableSystemItemsFilteringEnum.Reports,\n reportId: this.report?.id,\n reportType: this.report?.notificationType,\n alreadySelectedIds: this.report?.locationIds\n },\n close: this.closeLocationSelectionActionSheet\n };\n }\n\n @action closeLocationSelectionActionSheet(result: SelectionResult): void {\n if (this.report) {\n set(this.report, 'locationIds', result.selectedIds);\n }\n }\n\n @computed('report.{allowsLocationSelection,possibleLocations.length}', 'selectionType')\n get showLocationSelectionActionSheet() {\n if (this.selectionType === 'device' || !this.report) {\n return false;\n }\n\n return this.report.allowsLocationSelection && this.report.possibleLocations.length;\n }\n\n /**\n * Returns a promise hash of the passed in object.\n */\n promiseHash = (modelData: ReportEditModelData): Promise => {\n return hash(modelData);\n };\n\n /**\n * The resolved model.\n */\n resolvedModel?: ResolvedReportEditModel;\n\n /**\n * This gets used to determine what text to display for each event\n */\n locationOpenCloseResourcePath = 'generic.commercial';\n\n /**\n * Reference to the report's event types\n */\n locationOpenCloseEventMapping = locationOpenCloseEventTypes;\n\n @alias('identityManager.isEnterprise')\n declare isEnterprise: boolean;\n\n /**\n * These are all the recipients that can be selected for the report. The ones that the report\n * originally had will be selected initially.\n */\n @tracked\n allRecipients?: RecipientRecordMapping;\n\n /**\n * Task to retrieve all the possible recipient addresses that can be selected.\n */\n retrieveRecipientsTask = task(async () => {\n const allSelectableAddresses = await this.ajax.apiRequestForDataRecords(\n 'users/emailAddresses/getReportRecipientAddresses'\n );\n\n // If we don't get emails back, then don't make a subsequent request for user information\n if (allSelectableAddresses.length === 0) {\n return;\n }\n\n this.allSelectableAddresses = allSelectableAddresses;\n\n // Make a subsequent request to get user information. The response should be a record with a key value pair of emailId to the first and last name\n const allRecipientUserInfo = await this.ajax.apiRequestForValue(\n 'users/users/getReportRecipientUserInfo',\n undefined,\n allSelectableAddresses.map((address) => {\n return {\n contactAddressId: address.id\n };\n }),\n POST\n );\n\n // Build a RecipientRecord using the address and user info\n const allRecipients: RecipientRecordMapping = {};\n\n this.allSelectableAddresses.forEach((address) => {\n allRecipients[address.id] = {\n address: address.address,\n firstName: allRecipientUserInfo[address.id].firstName || '',\n lastName: allRecipientUserInfo[address.id].lastName || ''\n };\n });\n\n this.allRecipients = allRecipients;\n });\n\n /**\n * If a value is provided, then we will redirect to the matching device specific page when a report is saved or canceled.\n */\n @alias('args.model.reportType')\n declare reportType: number;\n\n /**\n * Shortcut to the report object on the resolved model.\n */\n @alias('resolvedModel.report')\n report?: BaseReport;\n\n @alias('report.eventTypes')\n declare eventTypes: number[];\n\n /**\n * All possible email addresses that can be selected on the report\n */\n @tracked\n allSelectableAddresses?: EmailAddress[];\n\n /**\n * The currently selected email recipients for the report\n */\n @alias('report.emailAddresses')\n declare selectedRecipients: EmailAddress[];\n\n /**\n * Do we have access to the ember reports beta? If not, then hide the create recipient button\n */\n @alias('identityManager.identityModel.hasEmberReportsBetaAccess')\n declare hasEmberReportsBetaAccess: boolean;\n\n /**\n * If the account is access control then we need to query for access control users; otherwise, we grab all the normal users.\n */\n @bool('identityManager.identityModel.isAccessControl')\n declare isAccessControl: boolean;\n\n /**\n * Whether the action sheet to create recipients is active.\n */\n @tracked\n isCreateRecipientActionSheetActive = false;\n\n /**\n * Whether the save confirmation action sheet is active.\n */\n @tracked\n isSaveConfirmationActionSheetActive = false;\n\n /**\n * Holds the save validation issues that cause the confirmation action sheet to toggle. This is passed down to the component.\n */\n @tracked\n reportValidationIssues: number[] = [];\n\n /**\n * Whether or not this is a Location Open/Close Report.\n */\n @equal('report.notificationType', LocationOpenCloseReport)\n declare isOpenCloseReport: boolean;\n\n /**\n * This is the list of recipient ids that are initially on the report.\n */\n @mapBy('selectedRecipients', 'id')\n originalRecipientIds?: string[];\n\n /**\n * Whether or not this report type has a custom edit route.\n */\n @computed('report.notificationType')\n get hasCustomEditRoute(): boolean {\n return [\n AccessHistoryReport,\n AlarmsIssuesReport,\n UserSummaryReport,\n VideoHealthReport,\n CrowdGatheringReport,\n LineMonitoringReport,\n OccupancyPlusPeopleCountingReport,\n PeopleCountingReport,\n TroubleConditionTrendsReport,\n TroubleConditionDetailsReport,\n BatteryLevelReport,\n UserActivityReport,\n UnattendedShowingsReport\n ].includes(this.report?.notificationType ?? -1);\n }\n\n /**\n * Text representing the forced time frame of the report.\n * Used to fetch the notification text for the time frame.\n */\n @computed('report.forcedTimeFrame')\n get timeFrameResourceName(): string | null {\n const { forcedTimeFrame } = this.report ?? {};\n switch (forcedTimeFrame) {\n case LastDay:\n return 'Daily';\n case LastWeek:\n return 'Weekly';\n case LastMonth:\n return 'Monthly';\n case Today:\n return 'Today';\n default:\n return null;\n }\n }\n\n /**\n * These are the three options you can choose for the report's time frame.\n * The report's current time frame will be selected initially.\n */\n @computed('report.{timeFrameType,notificationType}')\n get timeFrameOptions(): BinaryListItem[] {\n const { timeFrameType, notificationType } = this.report ?? {},\n hideYesterdayOptionForReport =\n notificationType &&\n [TroubleConditionTrendsReport, ResidentSmartHomeActivityReport].includes(notificationType);\n let timeFrames = ['yesterday', 'lastSevenDays', 'previousMonth'],\n startIndex = 0;\n\n if (hideYesterdayOptionForReport) {\n timeFrames = ['previousWeek', 'previousMonth'];\n startIndex = 1;\n }\n\n return timeFrames.map((translationKey, id) => {\n return new BinaryListItem({\n label: this.intl.t(`commercial.reports.edit.${translationKey}`),\n state: timeFrameType === id + startIndex,\n props: {\n id: id + startIndex\n }\n });\n });\n }\n\n /**\n * Hide time frame section for PointCentral's Trouble Condition Details Report\n * It uses frequency instead\n */\n @computed('report.notificationType')\n get shouldShowTimeFrame(): boolean {\n const { notificationType } = this.report ?? {};\n return !(notificationType === TroubleConditionDetailsReport);\n }\n\n /**\n * The dropdown items for the recipient/user dropdown.\n */\n @computed('allRecipients.[]')\n get recipientItems(): Promise {\n const { allRecipients, resolvedModel, originalRecipientIds, intl } = this;\n\n return (async () => {\n if (!(resolvedModel && allRecipients && originalRecipientIds)) {\n return [];\n }\n\n const dropdownSelectItems: DropdownSelectItem[] = [];\n\n for (const [id, recipient] of Object.entries(allRecipients)) {\n const { firstName, lastName } = recipient;\n\n dropdownSelectItems.push(\n DropdownSelectItem.create({\n isSelectable: true,\n name:\n firstName || lastName\n ? intl.t('commercial.reports.edit.userName', {\n firstName,\n lastName\n })\n : recipient.address,\n secondaryDescription: recipient.address,\n value: id,\n state: originalRecipientIds?.includes(id) ? SELECTED : UNSELECTED\n })\n );\n }\n\n return dropdownSelectItems;\n })();\n }\n\n /**\n * Generates the attachment options that can be selected for the report\n */\n @computed('report.{attachmentSelection,attachmentOptions}', 'attachmentTypes')\n get attachmentOptions(): DropdownSelectItem[] {\n return (\n this.report?.attachmentOptions.map((attachmentOptionEnum: number) =>\n DropdownSelectItem.create({\n name: this.intl.t(`commercial.reports.edit.${this.attachmentTypes[attachmentOptionEnum]}`),\n value: String(attachmentOptionEnum),\n state: this.report?.attachmentSelection === attachmentOptionEnum ? SELECTED : UNSELECTED\n })\n ) ?? []\n );\n }\n\n /**\n * Whether we are selecting specific devices or specific locations for this report.\n */\n @tracked\n selectingSpecificItems?: boolean;\n\n /**\n * Type of item selection for the report.\n */\n @computed('report.allowsDeviceSelection')\n get selectionType(): ReportItemSelectionSignature['Args']['selectionType'] {\n return this.report?.allowsDeviceSelection ? 'device' : 'location';\n }\n\n /**\n * Sets selectingSpecificItems based on the current selection for using All \"Items\" or selecting items.\n */\n @action\n changedFilteredItemAmount(selectingSpecificItems: boolean): void {\n this.selectingSpecificItems = selectingSpecificItems;\n }\n\n /**\n * Gets all of the new recipients. This gets passed down to the recipient action sheet and gets called once one is successfully created.\n */\n @action\n async getNewRecipients(recipientEmailRecords: EmailAddress[], firstName: string, lastName: string): Promise {\n if (this.resolvedModel) {\n set(this, 'selectedRecipients', [...this.selectedRecipients.slice(), ...recipientEmailRecords]);\n\n // Create a new recipient mapping of the new elements. We're expecting 1 user and a maximum of 3 email records\n const newRecipientItems: RecipientRecordMapping = {};\n\n recipientEmailRecords.forEach((recipientEmail) => {\n newRecipientItems[recipientEmail.id] = {\n address: recipientEmail.address,\n firstName: firstName || '',\n lastName: lastName || ''\n };\n });\n\n // Add the new recipients to the list of allRecipients. We do this to prevent requesting all the dropdown items from the back end each time we add a new recipient\n this.allRecipients = {\n ...this.allRecipients,\n ...newRecipientItems\n };\n\n // Add the email address models to the list of allSelectableAddresses\n this.allSelectableAddresses = [...(this?.allSelectableAddresses ?? []), ...recipientEmailRecords];\n }\n }\n\n /**\n * Sets the model's timeFrameType to the newly selected time frame.\n */\n @action\n changedTimeFrame(timeFrameOptions: BinaryListItem<{ id: number }>[]): void {\n const timeFrame = timeFrameOptions.find((item) => item.state)?.props.id;\n if (this.report && timeFrame !== undefined) {\n set(this.report, 'timeFrameType', timeFrame);\n }\n }\n\n /**\n * Updates the selected recipients from the dropdown.\n */\n @action\n async changedRecipients(recipientOptions: DropdownSelectItem[]): Promise {\n if (!this.allRecipients || !this.allSelectableAddresses) {\n return;\n }\n\n // Grab all of the selected recipient IDs\n const selectedIds = recipientOptions.filter((item) => item.state === SELECTED).map((item) => item.value);\n if (this.report && this.resolvedModel) {\n // Update the list of selected recipients\n set(\n this,\n 'selectedRecipients',\n this.allSelectableAddresses.filter((item) => selectedIds.includes(item.id))\n );\n }\n }\n\n /**\n * Determines if the event should be selected in the event dropdown menu depending on the number and type of events that are currently selected.\n */\n @action\n getEventState(eventType: number): boolean {\n const eventTypes = this.eventTypes ?? [];\n return (eventTypes.length === 0 || eventTypes.includes(eventType)) ?? false;\n }\n\n /**\n * Sets the model's event types when the event dropdown component is modified\n */\n @action\n setEventTypesOnReport(eventTypeOptions: number[]): void {\n if (this.report) {\n set(this.report, 'eventTypes', eventTypeOptions);\n }\n }\n\n /**\n * Sets the model's attachment type to that which is currently selected in the dropdown.\n */\n @action\n changedAttachmentType(attachmentType: string): void {\n if (this.report) {\n set(this.report, 'attachmentSelection', parseInt(attachmentType));\n }\n }\n\n /**\n * Toggles whether the create recipient action sheet is active.\n */\n @action\n toggleRecipientActionSheet(): void {\n this.isCreateRecipientActionSheetActive = !this.isCreateRecipientActionSheetActive;\n }\n\n /**\n * Toggles whether the save confirmation action sheet is active.\n */\n @action\n toggleSaveConfirmationActionSheet(): void {\n this.isSaveConfirmationActionSheetActive = !this.isSaveConfirmationActionSheetActive;\n }\n\n /**\n * Check if we need to render the save confirmation action sheet.\n * We need to do so when no recipients are selected and when all the selected locations dont have business hours enabled\n */\n @action\n async shouldDisplaySaveConfirmationActionSheet(): Promise {\n this.reportValidationIssues = [];\n\n if (this.isOpenCloseReport && this.isEnterprise) {\n await this.auditBusinessHoursForOpenClose();\n }\n if (!this.report?.emailAddresses.length) {\n this.reportValidationIssues.push(NoRecipientsSelected);\n }\n\n // Get rid of the NoValidationIssue and check if we still have issues\n return this.reportValidationIssues.length > 0;\n }\n\n /**\n * Get the number of selected units with business hours enabled from the back end.\n * Alert the user if all of their units dont have business hours\n * If none have business hours, disable the save button and display a message\n * If some have business hours, just display a message\n * If all units have business hours don't render the save confirmationa ction sheet\n */\n @action\n async auditBusinessHoursForOpenClose(): Promise {\n // If we're selecting specific items, we'll audit the selected location ids\n // If we're not, then we'll audit all of the possible ids\n const locationIds = this.selectingSpecificItems\n ? this.report!.locationIds\n : this.report!.possibleLocations.map((location) => location.id),\n unitsWithBusinessHours = await this.ajax.apiRequest(\n '/settings/businessHours/locationBusinessHours/getNumOfUnitsWithBusinessHours',\n undefined,\n locationIds,\n POST\n );\n\n if (Number(unitsWithBusinessHours) === 0) {\n this.reportValidationIssues.push(NoUnitsWithBusinessHours);\n } else if (Number(unitsWithBusinessHours) !== locationIds.length) {\n this.reportValidationIssues.push(SomeUnitsWithBusinessHours);\n }\n\n // If we make it here, then all the selected units have business hours enabled and we don't have to render the confirmation action sheet\n }\n\n /**\n * Determine which report validation issues exist. Get the matching text and set the confirmationDescription value to a newline seperated string.\n */\n @computed('reportValidationIssues.[]', 'resourceForIssues')\n get confirmationDescription(): string {\n // Holds the validation issues that the report currently has\n const confirmationDescription = this.reportValidationIssues\n .map((issue) => this.intl.tc(this, this.resourceForIssues[issue]))\n .join('\\n');\n\n return confirmationDescription;\n }\n\n /**\n * Should the save confirmation action sheet have the save button disabled\n */\n @computed('reportValidationIssues.[]')\n get shouldDisableActionSheetSaveButton(): boolean {\n return !!this.reportValidationIssues?.find((issue) => issue === NoUnitsWithBusinessHours);\n }\n\n /**\n * Attempt to save the report. Transition to reports route if successful.\n */\n @action\n async saveReport(): Promise {\n // If the current selection is to use All \"items\", set the report's devices or locations to an empty array.\n if (!this.selectingSpecificItems && this.report) {\n set(this.report, this.selectionType === 'location' ? 'locationIds' : 'deviceIds', []);\n }\n // Open the save confirmation action sheet if there are issues\n if (await this.shouldDisplaySaveConfirmationActionSheet()) {\n this.toggleSaveConfirmationActionSheet();\n } else {\n this.saveAndTransitionToReportsRoute();\n }\n }\n\n /**\n * Save the report, reset visited routes stack, and transition back to Reports page\n */\n @action\n saveAndTransitionToReportsRoute(): void {\n const isNewReport = !!this.report?.isNew;\n this.resolvedModel?.report\n .save()\n .then(() => {\n const reportName = this.resolvedModel?.report.name,\n successMessage = this.intl.t(\n `commercial.reports.edit.report${isNewReport ? 'Created' : 'Updated'}`,\n { reportName }\n );\n this.navigation.transitionToRouteId(this.args.reportRoute, {\n queryParams: {\n reportType: this.reportType\n }\n });\n this.notificationManager.addSuccess(successMessage);\n })\n .catch((ex) => {\n // If there's an error, set the report email addresses to what was previously selected or select all the possible emails\n const emailAddresses = this.selectedRecipients ?? [],\n selectedContactAddressesIds = emailAddresses.map((item) => item.id).join();\n // Log to Sentry if we encounter a server error.\n if (\n ex?.errors &&\n (ex.errors.errors ?? ex.errors).some((error: Error & { code?: number }) => error.code ?? 0 >= 500)\n ) {\n sentryWithScopeAndError('Unable to save report.', { selectedContactAddressesIds, ex }, undefined);\n }\n });\n }\n\n /**\n * Cancel edit action to transition back to the report list route.\n */\n @action\n cancel(): void {\n this.navigation.transitionToRouteId(this.args.reportRoute, {\n queryParams: {\n reportType: this.reportType\n }\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::ReportEditRoute': typeof ReportEditRoute;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n\",{ moduleName: \"customer-site/components/commercial/reports/report-events-dropdown/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\nimport DropdownSelectItem, { SELECTED, UNSELECTED } from '@adc/ui-components/utils/dropdown-select-item';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type IdentityManager from 'customer-site/services/identity-manager';\n\ninterface ReportEventsDropdownSignature {\n Args: {\n /** Mapping between the enum of the event and the resource key */\n eventMapping: [number, string][];\n /** Holds the events that are currently selected on the report */\n eventTypes: number[];\n /** Holds the path where each resource key is located */\n reportEventTypeResourcePath: string;\n /** Report properties can't be modified at the component level, so the report will pass down this method to set the eventTypes and it'll get called when the selected reports change */\n setEventTypesOnReport(eventItems: number[]): void;\n /** Method to check if the current event is selected on the report */\n getEventState(eventEnum: number): boolean;\n };\n}\n\n@intlPath({ path: 'commercial/reports/report-events-dropdown' })\nexport default class ReportEventsDropdown extends Component {\n @service declare intl: ADCIntlService;\n @service declare identityManager: IdentityManager;\n\n @alias('identityManager.identityModel.hasEmberReportsBetaAccess')\n declare hasEmberReportsBetaAccess: boolean;\n\n /**\n * Render the dropdown items for each supported event for the report\n */\n @computed('args.{reportEventTypeResourcePath,eventMapping,eventTypes}')\n get eventItems(): DropdownSelectItem[] {\n const {\n args: { reportEventTypeResourcePath, eventMapping, eventTypes, getEventState },\n intl\n } = this,\n reportEventTypes = eventTypes ?? [];\n return eventMapping.map(([typeEnum, typeString]) =>\n DropdownSelectItem.create({\n isSelectable: true,\n name: intl.t(`${reportEventTypeResourcePath}.${typeString}`),\n value: String(typeEnum),\n state: reportEventTypes.length === 0 || getEventState(typeEnum) ? SELECTED : UNSELECTED\n })\n );\n }\n\n @action\n valueChange(items: DropdownSelectItem[]): void {\n const selectedEvents = items.filter((item) => item.state === SELECTED),\n allEventTypes = this.args.eventMapping.map(([typeEnum]) => typeEnum);\n // If none of the dropdown items are selected then we need to pass in all of the possible event ids to get them set on the report.\n // If we have events selected on the report then we'll pass in a list of all the currently selected event ids and set them on the report.\n const eventTypes =\n selectedEvents.length === 0 ? allEventTypes : selectedEvents.map((item) => Number(item.value));\n this.args.setEventTypesOnReport(eventTypes);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::ReportEventsDropdown': typeof ReportEventsDropdown;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n {{#unless this.isMobileApp}}\\n \\n {{/unless}}\\n
\\n
    \\n
  • \\n {{@report.name}}\\n
  • \\n
  • \\n {{#if this.isMobileApp}}\\n \\n {{/if}}\\n

    {{@report.notificationTypeName}}

    \\n
  • \\n {{#if @report.isFullySetup}}\\n
  • \\n

    {{@report.scheduleDescription}}

    \\n
  • \\n {{else}}\\n
  • \\n \\n

    {{tc this \\'incompleteReport\\'}}

    \\n
  • \\n {{/if}}\\n
\\n
\\n {{#if this.showToggle}}\\n \\n {{/if}}\\n {{#unless this.isMobileApp}}\\n \\n \\n \\n {{/unless}}\\n\",{ moduleName: \"customer-site/components/commercial/report-row/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { reportToRouteMap } from 'customer-site/classes/commercial/reports/edit/base-report-edit-route';\nimport {\n EmberReportEdit,\n EmberEnterpriseReportEdit,\n EmberReportWebviewIFramePage\n} from 'customer-site/enums/CustomerPageUrl';\nimport { intlPath } from '@adc/i18n/path';\nimport { ActionItem, EditActionItem, DeleteActionItem } from '@adc/ui-components/utils/action-item';\nimport DropdownActionItem from '@adc/ui-components/utils/dropdown-action-item';\n\nimport './_style.scss';\n\n/**\n * Helper that's used to handle the response received after making calls to our BaseReportController on the back end\n *\n * @private\n * @param {models.notifications.reports.BaseReport} report\n * @param { Response } response\n * @param { this } currentThis\n */\nfunction getReportHelper(report, response) {\n const { contextManager, notificationManager } = this,\n { value } = response;\n\n if (value) {\n // We want to open the report in the same page if this is the mobile app,\n // but we want to open it in a new tab/window otherwise.\n if (contextManager.get('identityModel.isMobileApp')) {\n if (response.metaData?.shouldUseIFrame) {\n contextManager.transitionToNativeRoute(EmberReportWebviewIFramePage, undefined, {\n url: value,\n routeClass: 'commercial-reports-webview',\n iframeTitle: report.notificationTypeName\n });\n } else {\n // Otherwise render the report directly in the current webview\n contextManager.transitionToUrl(value);\n }\n }\n // We're on desktop, so open the report webview in a new tab.\n else {\n window.open(value);\n }\n } else {\n // We failed to retrieve a url for the report webview\n notificationManager.addError(this.intl.tc(this, 'noCachedReportError'));\n }\n}\n\n/**\n * @classdesc\n *\n * Displays a single Report in the Reports view.\n */\n@intlPath({ path: 'commercial/report-row' })\nexport default class ReportRow extends Component {\n @service contextManager;\n @service identityManager;\n @service intl;\n @service media;\n @service modals;\n @service navigation;\n @service notificationManager;\n\n /**\n * Indicates if we're on the mobile app\n *\n * @type {boolean}\n */\n @alias('identityManager.identityModel.isMobileApp')\n isMobileApp;\n\n /**\n * Route ID for edit report page. Selects the appropriate context and\n * report edit route (for specific report types).\n *\n * @type {number}\n */\n @computed('args.report', 'identityManager.isEnterprise')\n get editReportRouteId() {\n const { notificationType } = this.args.report,\n reportEditRoutes = reportToRouteMap[notificationType] ?? {\n singleSystem: EmberReportEdit,\n enterprise: EmberEnterpriseReportEdit\n };\n\n return this.identityManager.isEnterprise ? reportEditRoutes.enterprise : reportEditRoutes.singleSystem;\n }\n\n /**\n * Determines if the conditions are satisfied to show the toggle on the report\n *\n * @type {boolean}\n */\n @computed('args.report.isFullySetup', 'isMobileApp')\n get showToggle() {\n return this.args.report.isFullySetup && !this.isMobileApp;\n }\n\n /**\n * Gather the action items to be rendered underneath the graph icon\n *\n * @returns {Array}\n */\n @computed('args.report')\n get getRunReportDropdownItems() {\n const { intl } = this,\n report = this.args.report;\n\n // Return a list that will have the runReport item only if the report can generate an on demand report.\n // Regardless, the list will have the view most recent report action item.\n return [\n report.canGenerateReportOnDemand\n ? DropdownActionItem.create({\n action: () => this.createOnDemandReport(report),\n name: intl.tc(this, 'runReport')\n })\n : null,\n DropdownActionItem.create({\n action: () => this.viewMostRecentReport(report),\n name: intl.tc(this, 'viewArchivedReport')\n })\n ].compact();\n }\n\n /**\n * Determine if the report row should show the collapsed version (ellipsis) when media.isMobileApp.\n *\n * @returns {boolean}\n */\n @computed('isMobileApp')\n get showCollapsed() {\n return this.getActionItems().length > 0 && this.isMobileApp;\n }\n\n /**\n * Redirect to the most recently created report (if there is one).\n *\n * @param {models.notifications.reports.BaseReport} report\n */\n @action\n async viewMostRecentReport(report) {\n const { notificationManager } = this;\n\n if (!report.canDisplayMostRecentReportView) {\n notificationManager.addError(this.intl.tc(this, 'mostRecentReportViewNotSupported'));\n return;\n }\n\n getReportHelper.call(this, report, await report.getMostRecentReportViewURL());\n }\n\n /**\n * Create and redirect to the most recently created report.\n *\n * @param {models.notifications.reports.BaseReport} report\n */\n @action\n async createOnDemandReport(report) {\n const { notificationManager } = this;\n\n if (!report.canGenerateReportOnDemand) {\n notificationManager.addError(this.intl.tc(this, 'onDemandReportViewNotSupported'));\n }\n\n getReportHelper.call(this, report, await report.generateNewReportView());\n }\n\n /**\n * Gather the Edit action item for the report to be displayed.\n *\n * @returns {Array}\n */\n @action\n getActionItems() {\n const {\n args: { report, reportType },\n intl\n } = this;\n\n if (!report.canEdit) {\n return [];\n }\n\n return [\n // Only display this email action on mobile and when the report is not incomplete\n ActionItem.create({\n action: () => this.toggleActiveStatus(),\n icon: 'email',\n iconTitle: intl.t('generic.email'),\n iconDesc: intl.t('generic.email'),\n // If the report is active, display \"Pause Email\"\n // Otherwise, display \"Resume Email\"\n text: this.intl.tc(this, report.active ? 'pauseEmail' : 'resumeEmail'),\n visible: this.isMobileApp && report.isFullySetup\n }),\n // Run report button, only display this if the canGenerateReportOnDemand property is true\n ActionItem.create({\n action: () => this.createOnDemandReport(report),\n icon: 'graph2',\n iconTitle: intl.tc(this, 'runReport'),\n text: intl.tc(this, 'runReport'),\n visible: this.isMobileApp && report.canGenerateReportOnDemand\n }),\n // View archived report button\n ActionItem.create({\n action: () => this.viewMostRecentReport(report),\n icon: 'folder-open',\n iconTitle: intl.tc(this, 'viewArchivedReport'),\n text: intl.tc(this, 'viewArchivedReport'),\n visible: this.isMobileApp\n }),\n EditActionItem.create({\n action: () =>\n this.navigation.transitionToRouteId(this.editReportRouteId, report.id, {\n queryParams: { reportType }\n }),\n text: intl.t('generic.editObject', { objectName: report.name })\n }),\n DeleteActionItem.create({\n // change syntax\n action: () => this.deleteReport(),\n text: intl.t('generic.deleteObject', { objectName: report.name })\n })\n ];\n }\n\n /**\n * Toggle the active status of the report\n */\n @action\n toggleActiveStatus() {\n const {\n args: { report },\n intl\n } = this;\n\n set(report, 'active', !report.active);\n\n report\n .toggleActiveStatus()\n .then(() => {\n // Display a success message when the email is resumed or paused\n this.notificationManager.addSuccess(intl.tc(this, report.active ? 'emailResumed' : 'emailPaused'));\n })\n .catch(() => report.rollbackAttributes());\n }\n\n /**\n * Delete the report\n */\n @action\n deleteReport() {\n const { intl } = this,\n { report, decrementTotalReportsCount } = this.args,\n reportName = report.name;\n\n this.modals.showConfirmationDialog(intl.t('generic.delete'), intl.tc(this, 'areYouSure', { reportName }), {\n text: intl.t('generic.delete'),\n css: 'btn-color-danger',\n action: async () => {\n await report.destroyRecord();\n this.notificationManager.addSuccess(intl.tc(this, 'reportDeleted', { reportName }));\n decrementTotalReportsCount();\n }\n });\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n <:toolbar as |api|>\\n \\n {{#unless (media \\'isMobile\\')}}\\n
\\n {{@reportsCountText}}\\n
\\n {{/unless}}\\n {{#unless (is-mobile-app)}}\\n
\\n \\n
\\n {{/unless}}\\n {{#if @showAddLink}}\\n \\n {{/if}}\\n \\n \\n\\n <:default>\\n {{#each @reports as |report|}}\\n {{!-- @glint-expect-error This component needs to be converted to TS. --}}\\n \\n {{/each}}\\n \\n\",{ moduleName: \"customer-site/components/commercial/reports/reports-page/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport type { BaseReportsRouteModel } from 'customer-site/commercial/reports/index/base-reports-route';\nimport type BaseReport from 'customer-site/models/notifications/reports/base-report';\n\nexport interface CommercialReportsPageSignature {\n Args: {\n model: BaseReportsRouteModel;\n searchString: string;\n addNewReport: () => void;\n decrementTotalReportsCount: () => void;\n reports?: BaseReport[];\n reportsCountText: string;\n reportType?: number;\n showAddLink: boolean;\n transitionToLegacyPage: () => void;\n };\n}\n\nconst CommercialReportsPage = templateOnlyComponent();\nexport default CommercialReportsPage;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Commercial::Reports::ReportsPage': typeof CommercialReportsPage;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n \\n {{yield}}\\n \\n {{#if @showDropdownArrow}}\\n \\n {{/if}}\\n
\",{ moduleName: \"customer-site/components/enterprise/locations/trouble-issues-wrapper/trouble-issues-inner-display/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface TroubleIssuesInnerDisplaySignature {\n Args: {\n showDropdownArrow?: boolean;\n title?: string;\n };\n Blocks: {\n default: [];\n };\n}\n\nconst TroubleIssuesInnerDisplay = templateOnlyComponent();\nexport default TroubleIssuesInnerDisplay;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Enterprise::Locations::TroubleIssuesWrapper::TroubleIssuesInnerDisplay': typeof TroubleIssuesInnerDisplay;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n {{#if (eq @troubleIssues.length 1)}}\\n {{!-- @glint-expect-error: We need to use to-string here because get can return anything, please fix this. --}}\\n \\n {{!-- @glint-expect-error: We need to use to-string here because get can return anything, please fix this. --}}\\n {{get @troubleIssues \\\"0\\\"}}\\n \\n {{else}}\\n \\n \\n \\n {{t \\'components.enterprise.locations.location-row.issuesWithCount\\' issueCount=@troubleIssues.length}}\\n \\n \\n \\n {{/if}}\\n
\",{ moduleName: \"customer-site/components/enterprise/locations/trouble-issues-wrapper/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { intlPath } from '@adc/i18n/path';\n\nimport type { DropdownActionsSignature } from '@adc/ui-components/components/dropdown-actions';\nimport './_style.scss';\n\ninterface TroubleIssuesWrapperComponentSignature {\n Element: HTMLDivElement;\n Args: Pick & {\n troubleIssues: string[];\n showDropdownArrow?: boolean;\n };\n}\n\n/**\n * If there is only one trouble issue, simply shows that one issue.\n * If there are multiple trouble issues, shows the count of issues, which functions as a dropdown that lists all of the issues.\n */\n@intlPath({ path: 'enterprise/locations/trouble-issues-wrapper' })\nexport default class TroubleIssuesWrapperComponent extends Component {\n /**\n * The array of items to display in the trouble issues dropdown.\n */\n @computed('args.troubleIssues.[]')\n get troubleIssuesDropdownItems(): Array<{ icon: 'warning'; name: string }> {\n return (this.args.troubleIssues ?? []).map((name) => ({ icon: 'warning', name }));\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Enterprise::Locations::TroubleIssuesWrapper': typeof TroubleIssuesWrapperComponent;\n }\n}\n","import { set } from '@ember/object';\nimport { getExtraDataString } from 'customer-site/components/commercial/reports/battery-level-report-edit/index';\nimport {\n Contacts,\n ImageSensor,\n ZWaveLocks,\n ControlPanel,\n SmokeHeat,\n Thermostat,\n Water,\n OtherDevices\n} from 'customer-site/enums/CustomerEventHistoryDeviceFilter';\nimport { EmberEnterpriseBatteryLevelReportEdit } from 'customer-site/enums/CustomerPageUrl';\nimport AdcBaseRoute from '../../../../classes/base-route';\n\nimport type Transition from '@ember/routing/transition';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type ReportEditRoute from '../route';\n\n/**\n * Map between device types and their corresponding translation strings.\n * (Using a Map to preserve insertion order)\n */\nexport const deviceTypeToLabelMap = new Map([\n [Contacts, 'contactSensor'],\n [ImageSensor, 'imageSensor'],\n [ZWaveLocks, 'locks'],\n [ControlPanel, 'panel'],\n [SmokeHeat, 'smokeHeat'],\n [Thermostat, 'thermostat'],\n [Water, 'waterDevices'],\n [OtherDevices, 'otherDevices']\n]);\n\n/**\n * @classdesc Edit an existing battery level report.\n */\nexport default class Route extends AdcBaseRoute {\n routeId = EmberEnterpriseBatteryLevelReportEdit;\n\n /**\n * The default battery level threshold is 25% and includes all device types.\n */\n defaultBatteryLevelThreshold = '25';\n\n model(_: any, transition: Transition): ModelFrom {\n return { ...this.modelFor>(transition.to.parent!.name) };\n }\n\n async afterModel(model: ModelFrom) {\n (async () => {\n const report = await model.data.report;\n if (report.extraData === '') {\n // Default battery level threshold to 25% and including all device types.\n set(\n report,\n 'extraData',\n getExtraDataString(\n this.defaultBatteryLevelThreshold,\n Array.from(deviceTypeToLabelMap.keys()).map(String)\n )\n );\n }\n })();\n }\n}\n"],"names":["ReportsCatalogController","_dec","computed","_class","Controller","constructor","arguments","_defineProperty","EmberReportEdit","reportCatalogItemParams","reportType","newReportRouteId","this","resetQueryParams","set","undefined","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor","Route","ExtraDataRoute","EmberAccessHistoryReportEdit","report","extraData","isNew","allEventIds","accessHistoryEventGroups","forEach","group","concat","EmberAlarmsIssuesReportEdit","String","alarmsIssuesReportOptions","DefaultUserActivityReportExtraData","ExtraDataKeyEnum","ShowUserAttributes","ExpectedInPersonDays","updateReportExtraData","keys","map","key","capitalize","toString","join","UserActivityReportEditRoute","EmberUserActivityReportEdit","get","EmberUserSummaryReportEdit","ShowUserCredentials","VideoHealthReportEditRoute","AdcBaseRoute","_initializerDefineProperty","_descriptor","EmberVideoHealthReportEdit","model","_","transition","_objectSpread","modelFor","to","parent","name","canViewLiveVideo","ajax","apiRequest","afterModel","data","modelProps","FullReport","HideSnapshotsSetting","canEdit","setProperties","service","configurable","enumerable","writable","initializer","alias","_dec2","_dec3","_dec4","BaseReportsController","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","EmberReportsCatalog","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","addNewReport","contextManager","transitionToNativeRoute","catalogRouteId","decrementTotalReportsCount","totalReportsCount","transitionToLegacyPage","media","isMobile","transitionToLegacyReportsPage","isEnterprise","EnterpriseReportsCenter","ReportsCenter","reportsCountText","intl","searchString","t","count","reportsCount","numReports","tracked","action","routeId","navigation","transitionToRouteId","createTemplateFactory","scope","formGroup_","commercialReportsReportEventsDropdown_","EventGroupEnum","eventGroups","id","DoorAccessed","eventIds","DoorBuzzedFromWebsite","DoorAccessedDoubleSwipe","DoorLocked","LockCommandSent","LockFloorCommandSent","DoorUnlocked","UnlockCommandSent","UnlockFloorCommandSent","DoorFailedAccess","DoorHeldOpen","DoorForcedOpen","Disarmed","ArmedStay","ArmedAway","accessHistoryReportEventMapping","eventGroup","AccessHistoryReportEdit","Component","getEventState","eventGroupEnum","_eventGroups$find$eve","_eventGroups$find","find","item","eventTypes","length","every","includes","setEventTypesOnReport","eventTypeOptions","newEventTypesArray","flat","setComponentTemplate","TEMPLATE","t_","dropdownSelectSingleSelect_","t_0","simpleBinaryList_","validationError_","getExtraDataString","batteryLevelThreshold","deviceFilters","BlrExtraDataKey","BelowValue","DeviceFilters","encodeURIComponent","toLowerCase","BatteryLevelReportEdit","owner","args","super","extraDataProperties","decodeURIComponent","split","reduce","acc","cur","keyValue","thresholdOptions","createThresholdDropdownItem","batteryLevel","DropdownSelectItem","create","resourcePath","value","state","SELECTED","UNSELECTED","Array","num","level","deviceTypeItems","from","deviceTypeToLabelMap","_ref","device","label","BinaryListItem","props","changedFilteredDeviceTypes","filteredDeviceTypes","selectedTypes","filter","changedBatteryLevelThreshold","listRowItem_","on","preventDefault_","fn","svgSymbol_","ReportCatalogItemRow","selectReportItem","queryParams","notificationTypeId","routeView_","commercialReportCatalogItemRow_","CommercialReportsCatalogPage","templateOnlyComponent","ReportItemSelectionInfo","ReportDeviceSelectionInfo","devicesByType","selectedItems","_this$report$deviceId","deviceIds","allowsItemSelection","allowsDeviceSelection","allItemIds","devices","itemDetailsByType","_ref2","items","_this$selectedItems","description","deviceSubItems","getSubItems","children","_ref3","reportItemSelectionType","notificationType","HVACHealthReport","VideoHealthReport","ReportLocationSelectionInfo","_this$report$location","locationIds","allowsLocationSelection","possibleLocations","location","locations","untypedLocation","buttonIcon_","actionSheetsEnterpriseLocationsLocationSelection_","ReportItemSelection","info","reportItemSelectionInfo","selectionType","selectedItemCount","selectingSpecificItems","locationSelectionButtonText","numLocations","closeActionSheet","result","_result$selectedIds$l","_result$selectedIds","isLocationSelectionActionSheetOpen","selectedIds","locationSelectionActionSheetProperties","close","itemAmountOptions","changeItemAmount","camelize","showItemSelection","itemTypeText","changedItemAmountType","changedSelectedItems","itemDetails","allIds","d","_info$selectedItems","AlarmsIssuesReportEdit","IncludeAlarmsEvent","IncludeLowBatteryEvent","IncludeLostPowerEvent","IncludeTamperEvent","IncludeWaterAlertEvent","IncludeCameraUnresponsiveEvent","IncludeGeneralFailureEvent","IncludeGunshotDetectedEvent","IncludeSimulatedGunshotDetectedEvent","alarmsIssuesReportEventMapping","event","supportedAlarmsIssuesReportOptions","alarmsIssuesEventTypes","Number","eventEnum","setExtraData","CommercialReportsBusinessActivityAnalyticsDropdownItems","commercialReportsBusinessActivityAnalyticsDropdownItems_","tc_","buttonSimple_","createDropdownSelectItems","ruleState","thresholds","ruleId","stateProp","nameFn","s","thresholdIndex","getPeopleCountThresholdsForRuleType","rule","ruleType","LineMonitor","maxQueueSizes","CrowdGathering","maximumCrowdSizes","BusinessOccupancy","maximumOccupancies","RuleDropdown","intlPath","path","_class2","ruleSectionLabel","reportBasedLabelText","ruleCheckboxesAndDropdowns","rules","r","selected","peopleCountItems","tc","waitTimeItems","maxWaitTimes","editRulesAndThresholds","_Object$keys$find$spl","_Object$keys$find","cameraId","EmberVideoBusinessActivityAnalyticsRuleList","navigateToRouteId_","createRuleGroupDropdownSelectItems","ruleGroupState","ruleGroupId","idx","RuleGroupDropdown","EmberVideoBusinessActivityAnalyticsRuleGroupList","ruleGroupSectionLabel","PeopleCountingReport","ruleGroupCheckboxesAndDropdowns","ruleGroups","commercialReportsBusinessActivityAnalyticsRuleDropdown_","commercialReportsBusinessActivityAnalyticsRuleGroupDropdown_","context","resource","peopleCountingResource","CrowdGatheringReport","OccupancyPlusPeopleCountingReport","LineMonitoringReport","updateReportRuleIdInfos","entries","ruleStateItem","personCountThresholdIndex","waitTimeThresholdIndex","updateReportRuleGroupInfos","ruleGroupStateItem","BusinessActivityAnalyticsReportEdit","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","LineCount","_this$model$rules$fil","_this$model$rules","_this$model$ruleGroup","_this$model$ruleGroup2","ruleIdInfos","cridi","_cridi$personCountThr","_cridi$waitTimeThresh","ruleGroup","ruleGroupInfos","ruleGroupInfo","enterpriseRulesText","supportsRuleGroups","showIsTabularGraphic","isTabularReportItems","isTabularReport","changeRuleDropdownValue","newIdx","changeRuleGroupDropdownValue","changeCheckboxSelection","stateProperty","updateIsTabularReport","forcedTimeFrame","LastWeek","attachmentSelection","attachmentOptions","timeFrameType","reportProperties","Csv","option","None","SelfGuidedToursReportEdit","_this$report","systemGroup","groups","isParentGroup","childGroups","availableGroupIds","specificGroupsSelected","groupIds","_this$report2","groupCategoryOptions","translationKey","changedGroupCategorySelection","groupOptions","_this$report3","_systemGroup$id","changedGroupSelection","checkboxTree_","errorTooltip_","simpleBinary_","eq_","TroubleConditionDetailsReportEdit","initializeSelections","knowledgeBaseURL","buildKnowledgeBaseURL","CustomerKnowledgeBase","PCTroubleConditionDetailsReport","intValue","values","TroubleConditionTypeEnum","TroubleConditionDetailsReportCategories","troubleConditionSelections","push","TroubleConditionDetailsReportDataColumns","dataColumnSelections","TroubleConditionDetailsReportFrequency","frequencySelection","testError","errors","errorsFor","console","log","troubleConditionCheckboxes","getTroubleConditionCheckboxes","dataColumnCheckboxes","getDataColumnCheckboxes","frequencyButtons","getFrequencyButtons","selectedValues","collator","Intl","Collator","numeric","sensitivity","troubleConditionDetailsReportCategoryMap","category","conditions","subitems","condition","CheckboxTreeItem","isSelectable","sort","a","b","compare","isCollapsible","isCollapsed","dataColumns","isNaN","updateExtraData","combinedSelections","getSelectedTroubleConditions","checkboxTree","categoryItem","selectedSubitems","subitem","getSelectedDataColumns","troubleConditionsChanged","dataColumnsChanged","frequencyChanged","BatteryTroubleConditions","PanelLowBattery","SensorLowBattery","HVACTroubleConditions","HeatingAndCoolingAlert","HVACControlFailure","SevereHVACAlert","ThermostatTooCold","ThermostatTooWarm","MiscDeviceTroubleConditions","ACFailure","LockJammed","SecureEnrollmentFailed","SensorMalfunction","GeoDeviceMalfunction","CarConnectorMalfunction","SensorTamper","PanelOrHubTroubleConditions","BatteryAbsent","BroadbandCommFailure","CellCommFailure","EmptyEquipmentList","ModuleMalfunction","PanelNotResponding","PanelTamper","PoorSignaling","ZWaveRadioTrouble","VideoTroubleConditions","CameraNotReachable","DevicePowerIssue","UploadsOverQuota","VideoDeviceFirmwareOutdated","VideoDeviceHardwareMalfunction","VideoObjectDetectionRuleNotConfigured","WaterTroubleConditions","DailyFlowEvent","ExtremeWaterTemp","HardwareFailure","LargeLeak","MediumLeak","PeriodicLeak","SmallLeak","WaterAlert","excludedTroubleConditions","AllTroubles","CustomerNotLoggedIn","InvalidPrimaryEmail","NoArmings","SetupNotComplete","CoolingAlert","HeatingAlert","SevereCoolingAlert","SevereHeatingAlert","categorizedTroubleConditions","OtherTroubleConditions","BatteryConditions","HVACConditions","MiscDeviceConditions","PanelOrHubConditions","VideoConditions","WaterConditions","OtherConditions","CommunityRegion","GroupName","UnitName","CustomerId","TroubleConditionCategory","TroubleCondition","TroubleConditionStartDate","AffectedDeviceType","AffectedDeviceName","simpleListItem_","hash","cached","esc","require","troubleConditionTypeResources","Other","TroubleConditionReportOptionsOrdered","TroubleConditionTrendsReportEdit","reads","checkboxItems","type","text","itemChanged","not_","userAttributeOptions","showUserAttributes","schedulePicker_","commercialReportsShowUserAttributes_","IncludeInPersonDays","UserActivityReportEdit","_extraDataParams$get$","_extraDataParams$get","extraDataParams","URLSearchParams","expectedInPersonDayBits","JSON","parse","expectedInPersonDays","dayBitsToArray","includeExpectedInPersonDays","includeExpectedInPersonDayItems","No","showSchedulePicker","Yes","updateShowUserAttributes","updateIncludeExpectedInPersonDays","expectedInPersonDayItems","_expectedInPersonDayI","findBy","updateExpectedInPersonDays","_value$selectedDays","selectedDays","dayBits","dayArrayToBits","UserSummaryReportEdit","includeUserCredentialsItems","DoNotShowUserCredentials","_URLSearchParams$get","v","extraDataString","changedIncludeUserCredentials","VideoHealthReportEdit","fullReport","displaySummarySectionOnly","DisplaySummarySectionOnly","hideSnapshotsSetting","extraDataOptions","hideSnapshots","summaryOrDetailOptions","showSnapshotOptions","snapshotOptions","changedDisplaySummarySectionOnly","summaryAndDetailsOption","changedShowHideSnapshots","BaseReportEditSelector","notificationTypeToComponentMap","AccessHistoryReport","AlarmsIssuesReport","UserSummaryReport","TroubleConditionTrendsReport","TroubleConditionDetailsReport","BatteryLevelReport","UserActivityReport","UnattendedShowingsReport","UnattendedShowingsReportEdit","componentToRender","_this$notificationTyp","actionSheet_","array","didInsert_","inlineAlert_","textInput_","autoFocus_","ActionSheetsCommercialReportsRecipients","lt","bool","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","createEmailAddressInput","emailAddressInputs","hasError","input","errorMessage","deleteEmailAddressInput","index","availableLocaleOptions","availableLocales","currentLocale","localeId","locale","displayName","parseInt","emailInputWithError","i","toggleEmailInputErrorStatus","createRecipient","notificationManager","getNewRecipients","isAccessControl","createdFromReportsPage","user","store","createRecord","firstName","firstNameInput","lastName","lastNameInput","emailRecords","email","address","save","Promise","all","async","catch","err","clearInputsAndCloseActionSheet","addSuccess","error","contactAddresses","destroyRecord","clearErrorMessages","addError","detail","processValidationErrorsFromResponse","call","clearInputValues","English_US","routeViewEditView_","commercialReportItemSelection_","commercialReportsBaseReportEditSelector_","spinnerSvg_","asyncLoader_","dropdownSelectMultiSelect_","await_","actionSheetsCommercialReportsRecipients_","actionSheetsConfirmSave_","locationOpenCloseEventTypes","CommercialEarlyOpen","CommercialClosedUnexpectedly","CommercialEarlyClose","CommercialLateOpen","CommercialLateClose","DisarmingSupervisionFault","ArmingSupervisionFault","CommercialOpenOnTime","CommercialClosedOnTime","ReportEditRoute","equal","LocationOpenCloseReport","mapBy","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","Pdf","NoRecipientsSelected","NoUnitsWithBusinessHours","SomeUnitsWithBusinessHours","modelData","_buildTask","generator","allSelectableAddresses","apiRequestForDataRecords","allRecipientUserInfo","apiRequestForValue","contactAddressId","POST","allRecipients","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","_descriptor22","_descriptor23","retrieveRecipientsTask","perform","properties","includeGroups","filterType","AvailableSystemItemsFilteringEnum","Reports","reportId","alreadySelectedIds","closeLocationSelectionActionSheet","showLocationSelectionActionSheet","hasCustomEditRoute","_this$report$notifica","_this$report4","timeFrameResourceName","_this$report5","LastDay","LastMonth","Today","timeFrameOptions","_this$report6","hideYesterdayOptionForReport","ResidentSmartHomeActivityReport","timeFrames","startIndex","shouldShowTimeFrame","_this$report7","recipientItems","resolvedModel","originalRecipientIds","dropdownSelectItems","recipient","secondaryDescription","_this$report$attachme","_this$report8","attachmentOptionEnum","_this$report9","attachmentTypes","_this$report10","changedFilteredItemAmount","recipientEmailRecords","_this$allSelectableAd","selectedRecipients","slice","newRecipientItems","recipientEmail","changedTimeFrame","_timeFrameOptions$fin","timeFrame","changedRecipients","recipientOptions","eventType","_this$eventTypes","changedAttachmentType","attachmentType","toggleRecipientActionSheet","isCreateRecipientActionSheetActive","toggleSaveConfirmationActionSheet","isSaveConfirmationActionSheetActive","shouldDisplaySaveConfirmationActionSheet","_this$report11","reportValidationIssues","isOpenCloseReport","auditBusinessHoursForOpenClose","emailAddresses","unitsWithBusinessHours","confirmationDescription","issue","resourceForIssues","shouldDisableActionSheetSaveButton","_this$reportValidatio","saveReport","saveAndTransitionToReportsRoute","_this$report12","_this$resolvedModel","isNewReport","then","_this$resolvedModel2","reportName","successMessage","reportRoute","ex","_this$selectedRecipie","_ex$errors$errors","selectedContactAddressesIds","some","_error$code","code","sentryWithScopeAndError","cancel","ReportEventsDropdown","eventItems","reportEventTypeResourcePath","eventMapping","reportEventTypes","typeEnum","typeString","valueChange","selectedEvents","allEventTypes","dropdownActions_","tc_0","getReportHelper","response","_response$metaData","metaData","shouldUseIFrame","EmberReportWebviewIFramePage","url","routeClass","iframeTitle","notificationTypeName","transitionToUrl","window","open","ReportRow","editReportRouteId","_reportToRouteMap$not","reportEditRoutes","reportToRouteMap","singleSystem","enterprise","EmberEnterpriseReportEdit","identityManager","showToggle","isFullySetup","isMobileApp","getRunReportDropdownItems","canGenerateReportOnDemand","DropdownActionItem","createOnDemandReport","viewMostRecentReport","compact","showCollapsed","getActionItems","canDisplayMostRecentReportView","getMostRecentReportViewURL","generateNewReportView","ActionItem","toggleActiveStatus","icon","iconTitle","iconDesc","active","visible","EditActionItem","objectName","DeleteActionItem","deleteReport","rollbackAttributes","modals","showConfirmationDialog","css","pageViewList_","searchToolbar_","media_","isMobileApp_","buttonNative_","commercialReportRow_","CommercialReportsPage","TroubleIssuesInnerDisplay","enterpriseLocationsTroubleIssuesWrapperTroubleIssuesInnerDisplay_","stopPropagation_","TroubleIssuesWrapperComponent","troubleIssuesDropdownItems","_this$args$troubleIss","troubleIssues","Map","Contacts","ImageSensor","ZWaveLocks","ControlPanel","SmokeHeat","Thermostat","Water","OtherDevices","EmberEnterpriseBatteryLevelReportEdit","defaultBatteryLevelThreshold"],"sourceRoot":""}