{"version":3,"sources":["webpack:///./src/infrastructure/components/query-filters/map-attributes-query-filter.ts","webpack:///./src/help/faqs/faq-group-service.js","webpack:///./src/tests/test-service.ts","webpack:///./src/location-testing/point-types/point-type-service.js","webpack:///./src/location-testing/plans/plan-coverage-type.ts","webpack:///./src/infrastructure/components/data-grid-select-all.ts","webpack:///./src/infrastructure/uploaded-files/uploaded-file-service.js","webpack:///./src/location-testing/cap-plans/cap-plan-service.ts","webpack:///./src/location-testing/point-selector-filter.ts","webpack:///./src/segmentation-templates/segment-type.ts","webpack:///./src/location-testing/plans/plan-service.ts","webpack:///./src/location-testing/remediations/remediation-user-type.ts","webpack:///./src/requests/sample-composite-options.ts","webpack:///./src/login-audit/login-audit-service.js","webpack:///./src/remediation-root-causes/remediation-root-cause-service.ts","webpack:///./src/location-testing/tasks/task-request-submission-service.ts","webpack:///./src/test-methods/test-method-helper.ts","webpack:///./src/location-testing/remediations/remediation-failed-tests-grid.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-configuration.ts","webpack:///./src/export-task-collection-templates/ui-view-export-task-collection-template.ts","webpack:///./src/infrastructure/components/query-filters/organizations-query-filter.ts","webpack:///./src/location-testing/operations-timing-options.js","webpack:///./src/location-testing/tasks/task-list-query-filters.ts","webpack:///./src/segmentation-templates/segmentation-template-segment-usages.ts","webpack:///./src/help/support/support-topic-service.js","webpack:///./src/infrastructure/components/query-filters/operations-timing-query-filter.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-service.ts","webpack:///./src/infrastructure/logger.js","webpack:///./src/test-results/test-results-grid.ts","webpack:///./src/infrastructure/aurelia-cell-renderer.ts","webpack:///./src/location-testing/operations-timing-helper.ts","webpack:///./src/location-testing/remediations/remediation-files-grid.ts","webpack:///./src/help/glossary/glossary-term-service.js","webpack:///./src/location-testing/test-method-group.ts","webpack:///./src/infrastructure/time-zone-service.js","webpack:///./src/location-testing/tasks/task-list-view-option.ts","webpack:///./src/status/status-query-filters.ts","webpack:///./src/location-testing/maps/map-summary-converter.ts","webpack:///./src/location-testing/plan-management/plan-management-service.ts","webpack:///./src/help/user-guides/user-guide-service.js","webpack:///./src/test-results/pagination-page-sizer.ts","webpack:///./src/organizations/organization-service.ts","webpack:///./src/news-items/news-item-service.js","webpack:///./src/segmentation-templates/ui-segmentation-template.ts","webpack:///./src/password-requirements/password-requirements-service.js","webpack:///./src/infrastructure/components/query-filters/is-assigned-query-filter.ts","webpack:///./src/users/user-service.ts","webpack:///./src/infrastructure/components/query-filters/record-status-query-filter.ts","webpack:///./src/infrastructure/components/query-filters/confirmation-testing-query-filter.ts","webpack:///./src/infrastructure/ag-grid/ag-localstorage-helper.ts","webpack:///./src/organizations/organization-data-type-setting.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/contracts/subscription-frequency-type.ts","webpack:///./src/location-testing/map-attributes/map-attribute-service.js","webpack:///./src/test-methods/test-method-service.js","webpack:///./src/label-templates/label-template-service.ts","webpack:///./src/label-templates/sample-label-display-only-element-manager.ts","webpack:///./src/location-testing/collection-type.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-service.ts","webpack:///./src/location-testing/maps/playback/playback-utility.js","webpack:///./src/location-testing/plan-management/ag-plan-management-grid-action-renderer.ts","webpack:///./src/infrastructure/components/datepicker-patch.js","webpack:///./src/location-testing/point-attributes/point-attribute-service.js","webpack:///./src/location-testing/maps/map-dashboard-selection-mode.ts","webpack:///./src/qualitative-results/qualitative-result-service.js","webpack:///./src/infrastructure/components/query-filters/collection-types-query-filter.ts","webpack:///./src/status/ui-certificate-contact.ts","webpack:///./src/dashboard/dashboard-service.ts","webpack:///./src/infrastructure/form-change-check-step.js","webpack:///./src/infrastructure/ag-grid/aurelia-cell-editor-comp-base.ts","webpack:///./src/infrastructure/components/query-filters/base-query-filter.ts","webpack:///./src/infrastructure/constants/organization-configuration.constants.ts","webpack:///./src/label-templates/label-template-type.ts","webpack:///./src/infrastructure/validation/validators.ts","webpack:///./src/reporting/reports/report-downloader.ts","webpack:///./src/infrastructure/ag-grid/ag-cell-renderers.ts","webpack:///./src/location-testing/tasks/task-service.ts","webpack:///./src/requests/v2/sample-segmentation-grid-col-builder.ts","webpack:///./src/infrastructure/string-utility.js","webpack:///./src/location-testing/plans/ui-schedule.ts","webpack:///./src/coa-report-styles/coa-report-style-service.ts","webpack:///./src/location-testing/remediations/remediation-service.ts","webpack:///./src/test-results/outcome-status-query-filter.ts","webpack:///./src/location-testing/points/point-risk.ts","webpack:///./src/infrastructure/ag-grid/ag-onfirstdatarendered-handler.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-list-query-filters.ts","webpack:///./src/dashboard-widgets/grid-config.ts","webpack:///./src/infrastructure/components/query-filters/map-plan-query-filter.ts","webpack:///./src/location-testing/plans/generate-task-date-selection-type.ts","webpack:///./src/location-testing/points/point-risk-comparer.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/infrastructure/number-utility.js","webpack:///./src/requests/v2/sample-segmentation-validator.ts","webpack:///./src/location-testing/cap-plans/ui-cap-plan-filters.ts","webpack:///./src/application-modules/application-module-id.ts","webpack:///./src/application-modules/application-module-service.js","webpack:///./src/requests/v2/ag-grid-components/ag-datemask-editor.ts","webpack:///./src/location-testing/maps/map-service.ts","webpack:///./src/infrastructure/ag-grid/ag-cell-helpers.ts","webpack:///./src/reporting/reports/report-service.ts","webpack:///./src/infrastructure/components/excel-cell-renderer.js","webpack:///./src/dashboard-widgets/widget-registry.ts","webpack:///./src/organization-sample-templates/organization-sample-template-service.js","webpack:///./src/location-testing/tasks/task-status-update-service.ts","webpack:///./src/infrastructure/components/cell-renderers/ag-bool-cell-renderer.ts","webpack:///./src/reporting/parameter-option-service.ts","webpack:///./src/location-testing/plans/task-generation-request-service.ts","webpack:///./src/test-results/test-results-query-filters.ts","webpack:///./src/location-testing/points/point-service.ts","webpack:///./src/infrastructure/application-insights-service.ts","webpack:///./src/infrastructure/components/query-filters/date-range-query-filter.ts","webpack:///./src/ams-coa-exports/ams-coa-export-service.ts","webpack:///./src/location-testing/maps/map-dashboard-view-option.ts","webpack:///./src/global-messaging/global-message-search-type.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-grid.ts","webpack:///./src/infrastructure/organization-utility.js","webpack:///./src/dashboard-widgets/dashboard-settings-service.ts","webpack:///./src/infrastructure/debounce.js","webpack:///./src/location-testing/points/point-zones.ts","webpack:///./src/infrastructure/validation/validation-error-formatter.ts","webpack:///./src/infrastructure/custom-error.ts","webpack:///./src/location-testing/maps/grids/point-test-result-grid.ts","webpack:///./src/security/login-error-message-provider.js","webpack:///./src/ams-coa-exports/create-ams-coa-export.ts","webpack:///./src/ams-coa-exports/create-ams-coa-export.html","webpack:///./src/app.js","webpack:///./src/app.html","webpack:///./src/app.scss","webpack:///./src/remediation-root-causes/remediation-root-cause-grid.ts","webpack:///./src/infrastructure/header/global-message-notifier/global-message-notification-grid.ts","webpack:///./src/organizations/organization-configuration-settings.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-header-options.ts","webpack:///./src/dashboard-widgets/dashboard-widgets-query-filters.ts","webpack:///./src/infrastructure/ag-grid/ag-grouping-helper.ts","webpack:///./src/base-styles/app.scss","webpack:///./src/location-testing/attribute-utility.ts","webpack:///./src/location-testing/plans/generate-tasks-distribution-method.ts","webpack:///./src/location-testing/plans/plan-type.ts","webpack:///./src/global-messaging/global-message-grid.ts","webpack:///./src/location-testing/maps/map-dashboard-query-filters.ts","webpack:///./src/dashboard-widgets/dashboard-widgets.ts","webpack:///./src/dashboard-widgets/dashboard-widgets.html","webpack:///./src/dashboard-widgets/dashboard-widgets.scss","webpack:///./src/dashboard-widgets/widget-filter-panel.ts","webpack:///./src/dashboard-widgets/widget-filter-panel.html","webpack:///./src/dashboard-widgets/widget-shell.ts","webpack:///./src/dashboard-widgets/widget-shell.html","webpack:///./src/dashboard-widgets/widgets/my-remediations-widget.ts","webpack:///./src/dashboard-widgets/widgets/my-remediations-widget.html","webpack:///./src/dashboard-widgets/widgets/my-remediations-widget.scss","webpack:///./src/dashboard-widgets/widgets/my-tasks-widget.ts","webpack:///./src/dashboard-widgets/widgets/my-tasks-widget.html","webpack:///./src/dashboard-widgets/widgets/my-tasks-widget.scss","webpack:///./src/dashboard-widgets/widgets/remediation-management-widget.ts","webpack:///./src/dashboard-widgets/widgets/remediation-management-widget.html","webpack:///./src/dashboard-widgets/widgets/remediation-management-widget.scss","webpack:///./src/dashboard-widgets/widgets/request-statuses-widget.ts","webpack:///./src/dashboard-widgets/widgets/request-statuses-widget.html","webpack:///./src/dashboard-widgets/widgets/request-statuses-widget.scss","webpack:///./src/dashboard-widgets/widgets/task-management-widget.ts","webpack:///./src/dashboard-widgets/widgets/task-management-widget.html","webpack:///./src/dashboard-widgets/widgets/task-management-widget.scss","webpack:///./src/dashboard-widgets/widgets/test-results-widget.ts","webpack:///./src/dashboard-widgets/widgets/test-results-widget.html","webpack:///./src/dashboard-widgets/widgets/test-results-widget.scss","webpack:///./src/dashboard/dashboard.ts","webpack:///./src/dashboard/dashboard.html","webpack:///./src/status/custom-coa-submitter.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template.ts","webpack:///./src/infrastructure/dialogs/dialog-presenter.js","webpack:///./src/location-testing/remediations/remediation-point-test-history-grid.ts","webpack:///./src/requests/v2/sample-segmentation-grid-options.ts","webpack:///./src/security/security-service.js","webpack:///./src/infrastructure/ag-grid/ag-stateful-grid-builder.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-detail.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-detail.html","webpack:///./src/export-task-collection-templates/export-task-collection-template-list.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-list.html","webpack:///./src/export-task-collection-templates/export-task-collection-template.scss","webpack:///./src/global-messaging/global-messaging-service.ts","webpack:///./src/requests/v2/sample-segmentation-grid-col-data-factory.ts","webpack:///./src/infrastructure/http-client-configurator.js","webpack:///./src/test-results/outcome-status.ts","webpack:///./src/labs/lab-service.js","webpack:///./src/global-messaging/global-message-detail.ts","webpack:///./src/global-messaging/global-message-detail.html","webpack:///./src/global-messaging/global-message-list.ts","webpack:///./src/global-messaging/global-message-list.html","webpack:///./src/infrastructure/closest.js","webpack:///./src/location-testing/test-method-management/test-method-management-service.ts","webpack:///./src/distributions-groups/distribution-group-service.ts","webpack:///./src/help/faqs/faq-detail.js","webpack:///./src/help/faqs/faq-detail.html","webpack:///./src/help/faqs/faq-group-detail.js","webpack:///./src/help/faqs/faq-group-detail.html","webpack:///./src/help/faqs/faq-group-list.js","webpack:///./src/help/faqs/faq-group-list.html","webpack:///./src/help/faqs/faq-list.js","webpack:///./src/help/faqs/faq-list.html","webpack:///./src/help/faqs/faqs.js","webpack:///./src/help/faqs/faqs.html","webpack:///./src/help/glossary/glossary.js","webpack:///./src/help/glossary/glossary-term-detail.js","webpack:///./src/help/glossary/glossary-term-detail.html","webpack:///./src/help/glossary/glossary-term-list.js","webpack:///./src/help/glossary/glossary-term-list.html","webpack:///./src/help/glossary/glossary.html","webpack:///./src/help/help-navigation-menu.js","webpack:///./src/help/help-navigation-menu.html","webpack:///./src/help/support/support.js","webpack:///./src/help/support/support-topic-detail.js","webpack:///./src/help/support/support-topic-detail.html","webpack:///./src/help/support/support-topic-list.js","webpack:///./src/help/support/support-topic-list.html","webpack:///./src/help/support/support.html","webpack:///./src/help/user-guides/markdown-editor.js","webpack:///./src/help/user-guides/markdown-editor.html","webpack:///./src/help/user-guides/user-guide-detail.js","webpack:///./src/help/user-guides/user-guide-detail.html","webpack:///./src/help/user-guides/user-guide-list.js","webpack:///./src/help/user-guides/user-guide-list.html","webpack:///./src/location-testing/plans/task-generation-client-settings.ts","webpack:///./src/infrastructure/promise-queue.ts","webpack:///./src/help/support/support-request-service.js","webpack:///./src/infrastructure/components/accordion.js","webpack:///./src/infrastructure/components/accordion-item.js","webpack:///./src/infrastructure/components/accordion-item.html","webpack:///./src/infrastructure/components/accordion.html","webpack:///./src/infrastructure/components/content-size-change.js","webpack:///./src/infrastructure/components/data-dropdown.js","webpack:///./src/infrastructure/components/data-equalizer.js","webpack:///./src/infrastructure/components/data-grid.js","webpack:///./src/infrastructure/components/data-grid.html","webpack:///./src/infrastructure/components/data-toggler.js","webpack:///./src/infrastructure/components/datepicker.js","webpack:///./src/infrastructure/components/datepicker.html","webpack:///./src/infrastructure/components/doughnut-chart.js","webpack:///./src/infrastructure/components/doughnut-chart.html","webpack:///./src/infrastructure/components/error-tooltip.js","webpack:///./src/infrastructure/components/error-tooltip.html","webpack:///./src/infrastructure/components/filters/date-range-filter.ts","webpack:///./src/infrastructure/components/filters/date-range-filter.html","webpack:///./src/infrastructure/components/filters/filter-buttons.js","webpack:///./src/infrastructure/components/filters/filter-buttons.html","webpack:///./src/infrastructure/components/filters/map-plan-filter.ts","webpack:///./src/infrastructure/components/filters/map-plan-filter.html","webpack:///./src/infrastructure/components/filters/organization-filter.js","webpack:///./src/infrastructure/components/filters/organization-filter.html","webpack:///./src/infrastructure/components/filters/test-method-filter.js","webpack:///./src/infrastructure/components/filters/test-method-filter.html","webpack:///./src/infrastructure/components/full-calendar.js","webpack:///./src/infrastructure/components/full-calendar.html","webpack:///./src/infrastructure/components/full-height.js","webpack:///./src/infrastructure/components/index.js","webpack:///./src/infrastructure/components/info-tip.js","webpack:///./src/infrastructure/components/info-tip.html","webpack:///./src/infrastructure/components/keyhold-prevent-focus.js","webpack:///./src/infrastructure/components/mini-doughnut-chart.js","webpack:///./src/infrastructure/components/mini-doughnut-chart.html","webpack:///./src/infrastructure/components/notify-form-changes.js","webpack:///./src/infrastructure/components/record-change-list.js","webpack:///./src/infrastructure/components/record-change-list.html","webpack:///./src/infrastructure/components/required.ts","webpack:///./src/infrastructure/components/scroll-into-view.js","webpack:///./src/infrastructure/components/select2.js","webpack:///./src/infrastructure/components/select2-item-template.js","webpack:///./src/infrastructure/components/select2.html","webpack:///./src/infrastructure/components/selector.ts","webpack:///./src/infrastructure/components/selector-item-template.ts","webpack:///./src/infrastructure/components/selector.html","webpack:///./src/infrastructure/components/slider.js","webpack:///./src/infrastructure/components/slider.html","webpack:///./src/infrastructure/components/time-selector.js","webpack:///./src/infrastructure/components/time-selector.html","webpack:///./src/infrastructure/converters/array-property-map-value-converter.js","webpack:///./src/infrastructure/converters/boolean-value-converter.js","webpack:///./src/infrastructure/converters/cap-plan-test-method-format-value-converter.js","webpack:///./src/infrastructure/converters/comma-separate-value-converter.js","webpack:///./src/infrastructure/converters/currency-value-converter.js","webpack:///./src/infrastructure/converters/date-format-value-converter.js","webpack:///./src/infrastructure/converters/dictionary-value-converter.js","webpack:///./src/infrastructure/converters/filter-value-converter.js","webpack:///./src/infrastructure/converters/group-by-value-converter.js","webpack:///./src/infrastructure/converters/index.js","webpack:///./src/infrastructure/converters/json-value-converter.js","webpack:///./src/infrastructure/converters/lookup-and-map-value-converter.ts","webpack:///./src/infrastructure/converters/number-format-value-converter.js","webpack:///./src/infrastructure/converters/number-value-converter.js","webpack:///./src/infrastructure/converters/object-keys-value-converter.ts","webpack:///./src/infrastructure/converters/percent-value-converter.js","webpack:///./src/infrastructure/converters/sort-value-converter.js","webpack:///./src/infrastructure/converters/take-value-converter.js","webpack:///./src/infrastructure/converters/test-method-format-value-converter.js","webpack:///./src/infrastructure/dialogs/ag-grid-dialog.ts","webpack:///./src/infrastructure/dialogs/ag-grid-dialog.html","webpack:///./src/infrastructure/dialogs/alert.js","webpack:///./src/infrastructure/dialogs/alert.html","webpack:///./src/infrastructure/dialogs/confirmation.js","webpack:///./src/infrastructure/dialogs/confirmation.html","webpack:///./src/infrastructure/dialogs/data-grid-reorder-dialog.ts","webpack:///./src/infrastructure/dialogs/data-grid-reorder-dialog.html","webpack:///./src/infrastructure/dialogs/exportable-field-selector.ts","webpack:///./src/infrastructure/dialogs/exportable-field-selector.html","webpack:///./src/infrastructure/dialogs/label-selector.js","webpack:///./src/infrastructure/dialogs/label-selector.html","webpack:///./src/infrastructure/dialogs/name-value-item-selector.js","webpack:///./src/infrastructure/dialogs/name-value-item-selector.html","webpack:///./src/infrastructure/dialogs/user-selector.js","webpack:///./src/infrastructure/dialogs/user-selector.html","webpack:///./src/infrastructure/header/client-refresh.js","webpack:///./src/infrastructure/header/client-refresh.html","webpack:///./src/infrastructure/header/global-message-notifier/global-message-notifier.ts","webpack:///./src/infrastructure/header/global-message-notifier/global-message-notifier.html","webpack:///./src/infrastructure/header/header-account-dropdown.js","webpack:///./src/infrastructure/header/header-account-dropdown.html","webpack:///./src/infrastructure/header/header-navigation-menu.js","webpack:///./src/infrastructure/header/header-navigation-menu.html","webpack:///./src/help/faqs/faq-service.js","webpack:///./src/export-task-collection-templates/export-task-collection-template-service.ts","webpack:///./src/test-results/test-results-service.ts","webpack:///./src/location-testing/maps/grids/point-remediation-grid.ts","webpack:///./src/location-testing/test-method-management/test-method-management-grid.ts","webpack:///./src/export-task-collection-templates/export-task-collection-template-footer-options.ts","webpack:///./src/partial-test-results/partial-test-results-grid.ts","webpack:///./src/location-testing/plans/task-generation-request.ts","webpack:///./src/partial-test-results/partial-test-results-service.ts","webpack:///./src/label-templates/label-template-detail.ts","webpack:///./src/label-templates/label-template-detail.html","webpack:///./src/label-templates/label-template-detail.scss","webpack:///./src/label-templates/label-template-list.ts","webpack:///./src/label-templates/label-template-list.html","webpack:///./src/labs/lab-detail.ts","webpack:///./src/labs/lab-detail.html","webpack:///./src/labs/lab-list.ts","webpack:///./src/labs/lab-list.html","webpack:///./src/layout.js","webpack:///./src/layout.html","webpack:///./src/legal/privacy.ts","webpack:///./src/legal/privacy.html","webpack:///./src/legal/terms.ts","webpack:///./src/legal/terms.html","webpack:///./src/location-testing/cap-plans/cap-plan-detail.ts","webpack:///./src/location-testing/cap-plans/cap-plan-detail.html","webpack:///./src/location-testing/cap-plans/cap-plan-list.ts","webpack:///./src/location-testing/cap-plans/cap-plan-list.html","webpack:///./src/location-testing/cap-plans/components/auto-remediation.ts","webpack:///./src/location-testing/cap-plans/components/auto-remediation.html","webpack:///./src/location-testing/cap-plans/components/plan-selector.ts","webpack:///./src/location-testing/cap-plans/components/plan-selector.html","webpack:///./src/location-testing/cap-plans/components/point-room-selector.ts","webpack:///./src/location-testing/cap-plans/components/point-room-selector.html","webpack:///./src/location-testing/cap-plans/components/point-type-selector.ts","webpack:///./src/location-testing/cap-plans/components/point-type-selector.html","webpack:///./src/location-testing/cap-plans/components/related-cap-plans.ts","webpack:///./src/location-testing/cap-plans/components/related-cap-plans.html","webpack:///./src/location-testing/cap-plans/components/sample-description.ts","webpack:///./src/location-testing/cap-plans/components/sample-description.html","webpack:///./src/location-testing/cap-plans/components/submit-buttons.ts","webpack:///./src/location-testing/cap-plans/components/submit-buttons.html","webpack:///./src/location-testing/cap-plans/components/test-methods-selector.ts","webpack:///./src/location-testing/cap-plans/components/test-methods-selector.html","webpack:///./src/location-testing/cap-plans/top-bar-slot.html","webpack:///./src/location-testing/customer-test-imports/customer-test-import-detail.js","webpack:///./src/location-testing/customer-test-imports/customer-test-import-detail.html","webpack:///./src/location-testing/customer-test-imports/customer-test-import-list.js","webpack:///./src/location-testing/customer-test-imports/customer-test-import-list.html","webpack:///./src/location-testing/location-testing-navigation-menu.js","webpack:///./src/location-testing/location-testing-navigation-menu.html","webpack:///./src/location-testing/maps/map-dashboard.ts","webpack:///./src/location-testing/maps/map-dashboard.html","webpack:///./src/location-testing/maps/map-detail.ts","webpack:///./src/location-testing/maps/map-detail.html","webpack:///./src/location-testing/maps/map-image.ts","webpack:///./src/location-testing/maps/map-image.html","webpack:///./src/location-testing/maps/map-list.ts","webpack:///./src/location-testing/maps/map-list.html","webpack:///./src/location-testing/plan-management/plan-management-list.ts","webpack:///./src/location-testing/plan-management/plan-management-list.html","webpack:///./src/location-testing/plans/generate-tasks.ts","webpack:///./src/location-testing/plans/generate-tasks.html","webpack:///./src/location-testing/plans/plan-coverage-pie-chart.ts","webpack:///./src/location-testing/plans/plan-coverage-pie-chart.html","webpack:///./src/location-testing/plans/plan-detail.ts","webpack:///./src/location-testing/plans/plan-detail.html","webpack:///./src/location-testing/plans/plan-list.ts","webpack:///./src/location-testing/plans/plan-list.html","webpack:///./src/location-testing/plans/plan-point-selector.ts","webpack:///./src/location-testing/plans/plan-point-selector.html","webpack:///./src/location-testing/points/point-detail.ts","webpack:///./src/location-testing/points/point-detail.html","webpack:///./src/location-testing/points/point-list.ts","webpack:///./src/location-testing/points/point-list.html","webpack:///./src/location-testing/remediations/remediation-detail.ts","webpack:///./src/location-testing/remediations/remediation-detail.html","webpack:///./src/location-testing/remediations/remediation-list.ts","webpack:///./src/location-testing/remediations/remediation-list.html","webpack:///./src/location-testing/requests/request-detail.ts","webpack:///./src/location-testing/requests/request-detail.html","webpack:///./src/location-testing/tasks/create-vector-tasks.ts","webpack:///./src/location-testing/tasks/create-vector-tasks.html","webpack:///./src/location-testing/tasks/task-detail.ts","webpack:///./src/location-testing/tasks/task-detail.html","webpack:///./src/location-testing/tasks/task-list.ts","webpack:///./src/location-testing/tasks/task-list.html","webpack:///./src/location-testing/tasks/task-status-selector-dialog.ts","webpack:///./src/location-testing/tasks/task-status-selector-dialog.html","webpack:///./src/location-testing/test-method-management/test-method-management-list.ts","webpack:///./src/location-testing/test-method-management/test-method-management-list.html","webpack:///./src/login-audit/login-audit.js","webpack:///./src/login-audit/login-audit-detail.js","webpack:///./src/login-audit/login-audit-detail.html","webpack:///./src/login-audit/login-audit.html","webpack:///./src/requests/request-detail-mode.ts","webpack:///./src/main.js","webpack:///./src/location-testing/customer-test-imports/customer-test-import-service.js","webpack:///./src/location-testing/cap-plans/ui-cap-plan.ts","webpack:///./src/news-items/news-item-detail.js","webpack:///./src/news-items/news-item-detail.html","webpack:///./src/news-items/news-item-list.js","webpack:///./src/news-items/news-item-list.html","webpack:///./src/location-testing/plans/task-distribution-method.ts","webpack:///./src/infrastructure/components/excel-cell-editor.js","webpack:///./src/infrastructure/compare-utility.js","webpack:///./src/infrastructure/string-resource-service.js","webpack:///./src/request-templates/request-template-service.ts","webpack:///./src/couriers/courier-service.ts","webpack:///./src/location-testing/plans/generate-tasks-point-zone-distribution-method.ts","webpack:///./src/organizations/organization-detail.ts","webpack:///./src/organizations/organization-detail.html","webpack:///./src/organizations/organization-list.ts","webpack:///./src/organizations/organization-list.html","webpack:///./src/organizations/settings.ts","webpack:///./src/organizations/settings.html","webpack:///./src/location-testing/maps/grids/point-plan-grid.ts","webpack:///./src/infrastructure/boolean-utility.ts","webpack:///./src/partial-test-results/partial-test-results-list.ts","webpack:///./src/partial-test-results/partial-test-results-list.html","webpack:///./src/password-requirements/password-requirements.js","webpack:///./src/password-requirements/password-requirements.html","webpack:///./src/password-requirements/zero-to-blank-value-converter.js","webpack:///./src/infrastructure/page-context.js","webpack:///./src/organizations/organization-configuration.ts","webpack:///./src/security/navigation/authorization-check-step.js","webpack:///./src/label-templates/ui-label-template-element.ts","webpack:///./src/remediation-root-causes/remediation-root-cause-list.ts","webpack:///./src/remediation-root-causes/remediation-root-cause-list.html","webpack:///./src/reporting/adhoc-reports/adhoc-field.ts","webpack:///./src/reporting/adhoc-reports/adhoc-field.html","webpack:///./src/reporting/adhoc-reports/adhoc-filter.ts","webpack:///./src/reporting/adhoc-reports/adhoc-filter.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-detail.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-detail.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-detail.scss","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-create.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-create.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-detail.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-detail.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-edit.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-edit.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-list.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-list.html","webpack:///./src/reporting/adhoc-reports/adhoc-report-subscriptions/top-bar-slot.html","webpack:///./src/reporting/adhoc-reports/draggable-field-container.ts","webpack:///./src/reporting/adhoc-reports/filters/boolean-filter.ts","webpack:///./src/reporting/adhoc-reports/filters/boolean-filter.html","webpack:///./src/reporting/adhoc-reports/filters/date-filter.ts","webpack:///./src/reporting/adhoc-reports/filters/date-filter.html","webpack:///./src/reporting/adhoc-reports/filters/number-filter.ts","webpack:///./src/reporting/adhoc-reports/filters/number-filter.html","webpack:///./src/reporting/adhoc-reports/filters/selection-filter.ts","webpack:///./src/reporting/adhoc-reports/filters/selection-filter.html","webpack:///./src/reporting/adhoc-reports/filters/text-filter.ts","webpack:///./src/reporting/adhoc-reports/filters/text-filter.html","webpack:///./src/reporting/reports/parameters/report-parameter.ts","webpack:///./src/reporting/reports/parameters/report-parameter.html","webpack:///./src/reporting/reports/report-detail.ts","webpack:///./src/reporting/reports/report-detail.html","webpack:///./src/reporting/reports/report-list.ts","webpack:///./src/reporting/reports/report-list.html","webpack:///./src/request-templates/request-template-selector.ts","webpack:///./src/request-templates/request-template-selector.html","webpack:///./src/requests/request-detail.ts","webpack:///./src/requests/request-detail-location-testing-sample-info.ts","webpack:///./src/requests/request-detail-location-testing-sample-info.html","webpack:///./src/requests/request-detail-request-info.ts","webpack:///./src/requests/request-detail-request-info.html","webpack:///./src/requests/request-detail-sample-info.ts","webpack:///./src/requests/request-detail-sample-info.html","webpack:///./src/requests/request-detail.html","webpack:///./src/requests/request-list.ts","webpack:///./src/requests/request-list.html","webpack:///./src/export-task-collection-templates/export-task-collection-template-formatting-options.ts","webpack:///./src/roles/role-detail.js","webpack:///./src/roles/role-detail.html","webpack:///./src/roles/role-list.js","webpack:///./src/roles/role-list.html","webpack:///./src/roles/role-move-users.js","webpack:///./src/roles/role-move-users.html","webpack:///./src/infrastructure/throttle.js","webpack:///./src/requests/v2/ag-grid-components/ag-datetime-editor-types.ts","webpack:///./src/security/forgot-password.js","webpack:///./src/security/forgot-password.html","webpack:///./src/security/login.js","webpack:///./src/security/login-dialog.js","webpack:///./src/security/login-dialog.html","webpack:///./src/security/login.html","webpack:///./src/security/reset-password.js","webpack:///./src/security/reset-password.html","webpack:///./src/security/unauthenticated-app.js","webpack:///./src/security/unauthenticated-app.html","webpack:///./src/segmentation-templates/segmentation-template-detail.ts","webpack:///./src/segmentation-templates/segmentation-template-detail.html","webpack:///./src/segmentation-templates/segmentation-template-list.ts","webpack:///./src/segmentation-templates/segmentation-template-list.html","webpack:///./src/specifications/specification-detail.ts","webpack:///./src/specifications/specification-detail.html","webpack:///./src/specifications/specification-list.js","webpack:///./src/specifications/specification-list.html","webpack:///./src/status/custom-coa-dialog.js","webpack:///./src/status/custom-coa-dialog.html","webpack:///./src/status/status.ts","webpack:///./src/status/status.html","webpack:///./src/location-testing/cap-plans/cap-plan-grid.ts","webpack:///./src/requests/v2/ag-grid-components/ag-datepicker-editor.ts","webpack:///./src/security/navigation/navigation-authorizer.js","webpack:///./src/requests/request-service.ts","webpack:///./src/segmentation-templates/segmentation-template-service.ts","webpack:///./src/status/result-service.ts","webpack:///./src/test-methods/test-method-list.js","webpack:///./src/test-methods/test-method-list.html","webpack:///./src/test-results/test-results-group-by-element.ts","webpack:///./src/test-results/test-results-group-by-element.html","webpack:///./src/test-results/test-results-list.ts","webpack:///./src/test-results/test-results-list.html","webpack:///./src/partial-test-results/partial-test-results-query-filters.ts","webpack:///./src/infrastructure/date-utility.js","webpack:///./src/location-testing/plan-management/plan-management-grid.ts","webpack:///./src/infrastructure/constants/localstorage.constants.ts","webpack:///./src/users/user-detail.ts","webpack:///./src/users/user-detail.html","webpack:///./src/users/user-list.ts","webpack:///./src/users/user-list.html","webpack:///./src/infrastructure/ag-grid/aurelia-cell-renderer-comp-base.ts","webpack:///./src/infrastructure/api-errors/api-errors-interceptor.js","webpack:///./src/roles/role-service.js","webpack:///./src/label-templates/ui-label-template.ts","webpack:///./src/infrastructure/ag-grid/ag-value-formatters.ts","webpack:///./src/segmentation-templates/ui-segmentation-template-segment.ts","webpack:///./src/location-testing/point-rooms/point-room-service.ts","webpack:///./src/infrastructure/foundation-validation-renderer.js","webpack:///./src/specifications/specification.ts","webpack:///./src/specifications/specification-service.ts","webpack:///./src/location-testing/plans/ui-plan-coverage.ts","webpack:///./src/dashboard/dashboard-query-filters.ts","webpack:///./src/location-testing/maps/map-list-query-filters.ts","webpack:///./src/request-defaults/request-defaults-service.ts","webpack:///./src/requests/v2/ag-grid-components/sample-segmentation-grid-preferences.ts","webpack:///./src/reporting/adhoc-reports/adhoc-report-options-service.ts","webpack:///./src/record-status.ts","webpack:///./src/location-testing/plans/plan-summary-converter.ts","webpack:///./src/location-testing/requests/sample-description-builder.ts"],"names":["MapAttributesQueryFilters","_key","mapAttributes","this","Object","assign","map","a","i","name","value","params","regexNameKey","regexValueKey","fooParams","entries","nameGroups","filter","p","test","valueGroups","length","Error","forEach","k","valueKey","substring","indexOf","push","FaqGroupService","inject","HttpClient","httpClient","includeFaqs","get","id","ids","query","join","delete","faqGroup","put","post","idOrdinalMap","patch","RequestService","statusQuery","filters","mapId","testMethodGroup","PointTypeService","buildQueryString","organizationId","PlanCoverageType","planCoverageTypes","Collected","Scheduled","CollectedAndScheduled","Unused","toPlanCoverageType","planCoverageTitle","DataGridSelectAll","dataGridItems","filterKeys","_dataGridItems","_allSelected","_canDeleteItems","_selectedDataGridItems","_filterKeys","_filteredDataGridItems","every","isSelected","dgi","isActive","filterText","filteredItems","keys","reduce","acc","curr","includes","toLowerCase","selected","items","UploadedFileService","path","files","reportProgress","fileUrls","formData","FormData","file","append","createRequest","asPut","withContent","withProgressCallback","send","CapPlanService","logger","capPlanFilters","tenantId","testMethodIds","capPlanId","queryString","testMethodId","capPlan","PointSelectorFilter","pointService","roomOptions","zoneOptions","mobileOptions","pauseOptions","typeOptions","riskOptions","attributeNameOptions","reset","description","selectedRooms","selectedZones","selectedMobileValues","selectedPausedValues","selectedTypes","selectedRisks","selectedAttributes","filterCount","points","pointAttributes","Array","from","Set","room","values","v","title","zone","toString","type","risk","getRiskCaption","pointAttributeValuesMap","Map","has","group","some","s","set","pointAttributeNames","attributes","attribute","attributeNameOption","attributeValues","valueOptions","attributeFiltersApplied","mobile","isPausedPendingRemediation","attributeName","matchingAttributes","o","selectedAttribute","selectedValues","selectedValue","attributeNamesInUse","disabled","pointAttribute","create","nameOptions","pointAttributeOption","getAttributeValueSelectorOptions","option","find","index","splice","SegmentType","Text","Selection","Unknown","PlanService","queryParameters","pointId","view","planTypes","DISCRETIONARY","token","SCHEDULED","RISK_BASED_PRIORITY","ADHOC","Promise","resolve","plan","mapIds","taskTargetDateTimeStart","taskTargetDateTimeEnd","coverageType","queryParams","format","RemediationUserType","compositeOptionsLookup","defaultCompositeOptions","internalCompositeOptions","defaultCompositeOptionsV2","internalCompositeOptionsV2","LoginAuditService","minDate","maxDate","qs","encodeURIComponent","Date","toISOString","userId","RemediationRootCauseService","baseRoute","remediationRootCauseList","TaskRequestSubmissionService","dialogPresenter","router","tasks","t","status","showAlert","sampleId","organizationIds","externalSources","task","testMethods","testMethod","add","externalSource","size","navigateToRoute","taskIds","testMethodNameFormatting","isImpersonatingUser","isImpersonatingOrg","billCode","externalId","testMethodManagementNameFormatting","testMethodName","testMethodPopUpManagementNameFormatting","nonDefinedTestMethod","isImpersonatingUserOrOrg","AgCellDelegateHandler","baseGridOptions","columnDefs","headerName","field","width","valueFormatter","cellRenderer","defaultColDef","comparator","compareStringsInsensitive","suppressContextMenu","remediationFailedTestGridOptions","setDefaults","withAutoHeight","addStatefulness","build","emptyExportTaskCollectionTemplateConfiguration","templateName","UiViewExportTaskCollectionTemplate","organizationConfigurations","organizations","_id","_organizationConfigurations","_isActive","_organizations","_displayName","arr","sep","item","OrganizationsQueryFilters","defaultOrganizationIds","_defaultOrganizationIds","resetFilterValues","Number","TaskListQueryFilters","dateRangeQueryFilters","mapPlanQueryFilters","recordStatusQueryFilters","isAssignedQueryFilters","collectionTypesQueryFilters","operationsTimingQueryFilters","onlyAssignedToMe","pointMobile","pointName","pointRisks","pointRooms","pointTypes","pointZones","taskStatusIds","getQueryParams","dateRangeQuery","dateRangeOverride","dateRangeOption","targetStartDate","targetEndDate","enableTimeFilter","mapPlanQuery","planId","planIds","recordStatusQuery","recordStatus","isAssignedQuery","isAssigned","collectionTypeQuery","collectionTypes","operationsTimingQuery","operationsTimings","setFilterValues","isArray","_filterCaption","count","dateRangeCaption","SegmentationTemplateSegmentUsages","usages","u","None","split","trim","SampleLabels","RequestCoas","SupportTopicService","supportTopic","OperationsTimingQueryFilters","operationsTimingsArr","AdhocReportService","adhocReport","getConsoleFunction","logLevel","console","error","warn","info","stringifyError","HttpResponseMessage","response","stack","message","errorToString","JSON","stringify","e","stringifyState","state","enableConsoleLog","window","location","hostname","getErrorData","responseContent","data","parse","tryParse","exception","apiErrorCode","requestId","headers","httpMethod","requestMessage","method","statusCode","url","origin","baseUrl","httpRequestId","httpStatusCode","Logger","transient","ApplicationInsightsService","applicationInsightsService","log","loggerName","consoleMessage","consoleParameters","consoleFunction","errorData","logEntry","catch","trackEvent","getEmmaValue","countResultAggFunction","resultValueFormatter","formatDateToLocal","local","testResultGridColDefs","chartDataType","colId","toolPanelClass","aggFunc","valueGetter","initialHide","marryChildren","children","columnGroupShow","suppressMenu","cellClass","sortable","suppressSizeToFit","enableRowGroup","enablePivot","pinned","template","minWidth","enableValue","autoGroupColumnDef","sideBar","animateRows","statusBar","statusPanels","statusPanel","align","suppressAggFuncInHeader","enableRangeSelection","enableCharts","popupParent","document","body","customChartThemes","passFailCustomTheme","baseTheme","palette","fills","strokes","chartThemes","testResultGrid","renderAgGridCellForAurelia","aureliaTemplate","container","instance","compile","rootElement","createElement","bind","appendNodesTo","toOperationsTiming","timing","x","remediationPreFilesGridOptions","remediationPostFileGridOptions","GlossaryTermService","glossaryTerm","TestMethodGroup","getTestMethodGroups","SEROTYPE","SPECIATION","PROFILE","TimeZoneService","TaskListViewOption","StatusQueryFilters","organizationQueryFilters","poNumber","customerRequestStatus","organizationsQuery","MapSummaryConverter","mapSummaries","activeOnly","maps","m","options","ms","PlanManagementService","replaceTestMethodRequest","UserGuideService","code","userGuide","calculatePageSizes","totalCount","maxCountDivisor","multiple","Math","ceil","divisor","pageSizes","pageSize","OrganizationService","startsWith","organization","names","getConfigurationValues","configuration","c","nameOrNames","NewsItemService","forDashboard","newsItem","UiSegmentationTemplate","segmentationTemplate","uiSegmentationTemplate","isArchived","rawSegments","segments","fromModel","rawChild","parentSegmentId","rawParent","childPairs","tryParseSegmentLookups","lookupMapping","sourceSegmentName","autoFillSegmentName","pairs","parent","child","organizationCaption","parsed","model","toModel","completedPairs","sourceSegment","autoFillSegment","PasswordRequirementsService","requirements","IsAssignedQueryFilters","_isAssigned","assignedState","UserService","search","user","isLocked","userRoles","RecordStatusQueryFilters","_recordStatus","ACTIVE","recordStatuses","ConfirmationTestingQueryFilters","_testMethodGroup","_confirmationTestValues","confirmationTestValues","tmg","agGridGetPreferences","preferences","agPreferences","localStorage","getItem","AG_PREFERENCES","prototype","hasOwnProperty","call","gridName","setItem","agGridSetPreferences","OrganizationDataTypeSetting","Boolean","stringToBoolean","dataType","ENABLE_BETA_FEATURES","SubscriptionFrequencyType","subscriptionFrequencyTypes","1","Daily","2","Weekly","3","Monthly","getSubscriptionFrequencyTypes","subscriptionFrequency","minDeliveryDay","maxDeliveryDay","deliveryDayValidationErrorMessage","subscriptionFrequencyTypeValidationErrorMessage","MapAttributeService","TestMethodService","LabelTemplateService","labelTemplate","SampleLabelDisplayOnlyElementManager","uiLabelTemplate","elements","margin","fontSize","lineSpacing","sampleIdElement","new","sampleTextOverride","bold","sampleDescriptionElement","collectionDateElement","positionDisplayOnlyElements","y","textAlign","CollectionType","Routine","Vector","CorrectiveAction","getCollectionTypeOptions","getCapPlanCollectionTypeOptions","toCollectionTypeTitle","collectionType","planTypeToCollectionTypes","planType","planTypeIdToCollectionTypes","planTypeId","planTypeStringToCollectionTypes","AdhocReportSubscriptionService","entity","request","generateDateRange","startDate","endDate","currentDate","moment","createPlaybackFrames","dailyResults","dailyResultGroups","date","sampleCollectionDate","pointResults","dailyResult","dailyResultGroup","g","allTestsPassed","anyTestWarned","currentPointResults","resultInfo","highlightTransition","AgPlanManagementGridActionRenderer","node","uiLevel","childrenAfterGroup","groupData","dates","$","fn","fdatepicker","UTCDate","UTC","apply","arguments","parseDate","language","valueOf","getTimezoneOffset","parseFormat","part","dir","part_re","parts","match","exec","parseInt","setUTCDate","getUTCDate","Datetimepicker","moveMonth","moveYear","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","nonpunctuation","val","filtered","setters_order","setters_map","hh","d","setUTCHours","h","ii","setUTCMinutes","ss","setUTCSeconds","yyyy","setUTCFullYear","yy","setUTCMonth","getFullYear","getMonth","getDate","cnt","isNaN","months","slice","inArray","monthsShort","formatDate","M","MM","dd","mm","dateParts","seps","extend","separators","shift","PointAttributeService","MapDashboardSelectionMode","QualitativeResultService","CollectionTypesQueryFilters","collectionTypesArr","UiCertificateContact","organizationCode","organizationKey","parentOrganizationKey","companyName","address","city","postalCode","country","phoneNumber","faxNumber","contactFullName","contactEmail","contactParts","FormChangeCheckStep","DialogPresenter","navigationInstruction","next","default","prevComponent","viewModel","formChanged","showLoseChangesConfirmation","then","confirmed","cancel","AureliaCellEditorCompBase","viewCompliler","viewFactory","attached","unbind","removeNodes","detached","BaseQueryFilter","_defaultSegement","_introSegment","obj","key","undefined","routeConfig","eventLookup","navModel","eventAggregator","filterString","_setGlobalFilterDebounce","clearTimeout","setTimeout","dateRangeFilterProp","filterCountOnlyCaption","possibleArray","definedParams","removeUndefinedProperties","paramKey","prop","getOwnPropertyDescriptor","getPrototypeOf","OrganizationConfigurationConstants","ENABLE_SEGMENT_LOOKUP_MAPPINGS","LabelTemplateType","Task","Sample","Validators","usFormat","RegExp","canFormat","semicolonSeparatedEmails","emailRegex","em","handleDownload","blob","contentDispositionHeader","fileName","groups","filename","appendChild","URL","createObjectURL","href","download","click","revokeObjectURL","parseAndThrowResponse","text","b","errorCode","errorMessage","downloadSsrsReport","downloadUrl","postObject","pageContext","isLoading","xhr","XMLHttpRequest","responseType","onreadystatechange","readyState","getResponseHeader","Blob","open","setRequestHeader","AgMarkedCellRenderer","TaskService","ianaTimeZone","tz","guess","taskFilters","includePlan","batchSize","copiedItems","batches","idBatches","toBatches","all","action","additionalParameters","results","flattenedResults","result","assignedUserId","batchUpdateTasks","statusId","collectedDateTime","comments","dashboardQuery","printerId","fields","selectedFields","f","string","charAt","toUpperCase","labelTemplateId","exportTaskCollectionTemplateId","exportTaskCollectionTemplateName","segmentColdId","segment","segmentationTemplateId","createLookupTypeSegmentationColumns","parentSegment","childSegment","isEditable","parentSegmentValues","childSegmentLookupValues","colDefs","parentColDef","editable","cellEditor","cellEditorPopup","cellEditorParams","valueSetter","newValue","childValue","segmentLookups","segmentName","matchingLookup","sl","getMatchingLookupValue","cellClassRules","childColDef","createNonLookupTypeSegmentationColumns","segmentationTemplates","st","colDef","SegmentationSampleGridColBuilder","colDataFactory","_colDataFactory","_colDefs","lvOrganizationSampleTemplates","indexedValues","sampleTypeId","col","headerCheckboxSelection","headerCheckboxSelectionFilteredOnly","checkboxSelection","minCollectionDate","maxCollectionDate","startOf","toDate","toView","collectionDate","isBetween","cellEditorSelector","component","context","dateTimeEditor","PICKER","segmentationTemplateSelectorOptions","selectorOption","getSegmentationTemplateByName","newSegments","onCellValueChanged","event","oldValue","api","oldSegmentationTemplate","newSegmentationTemplate","oldSegmentationTemplateId","newSegmentationTemplateId","currColDefs","getColumnDefs","updatedColDefs","removeUnusedSegmentationCols","newColDefs","createNewSegmentationCols","setColumnDefs","maxLength","rows","cols","areEditable","groupedLookupSegmentationTemplates","lookupParentSegment","lookupChildSegment","nonLookupSegmentationTemplates","allowInternalCompositing","lastCols","sampleTemplate","testTemplates","tt","oldValueSampleSegments","samples","oldValueColIds","getSegmentationTemplateById","cd","endsWith","lookupSegments","getLookupSegmentationTemplateById","nonLookupSegments","getNonLookupSegmentationTemplateById","groupLookupSegments","SrtingUtility","floor","random","chars","UiSchedule","taskDistributionMethod","WEEK_BASED","skipDays","targetCollectionTimes","timeZone","_blackoutDates","_blackoutDatesView","startDateView","_scheduleMinDate","getTwentyFourHoursAgoDate","schedule","blackoutDates","cycleDurationDays","blackoutSundays","blackoutMondays","blackoutTuesdays","blackoutWednesdays","blackoutThursdays","blackoutFridays","blackoutSaturdays","today","yesterdayDate","setDate","_startDate","_startDateView","_endDate","_endDateView","endDateView","blackoutDatesView","CoAReportStyleService","coaReportStyles","getCoAReportStyles","reportStyles","rs","RemediationService","remediationFilters","assignedToMe","remediation","remediationFileDetails","remediationFile","remediationId","isPostRemediation","asPost","remediationFileId","OutcomeStatusQueryFilters","_outcomeStatus","ALL","outcomeStatus","outcomeStatuses","PointRisk","getPointRiskOptions","NOT_SPECIFIED","LOW","MEDIUM","HIGH","expandRowAtIndex","rowIndex","displayedRowCount","getDisplayedRowCount","expandRowIndex","levelOneDisplayedRow","getDisplayedRowAtIndex","setExpanded","ExportTaskCollectionTemplateListQueryFilters","organizationsQueryFilters","timeStamp","getTime","buildGridOptions","staticGrid","column","cellHeight","oneColumnSize","MapPlanQueryFilter","_mapPlanIds","_mapPlanFilterType","mpFilterType","GenerateTasksDateSelectionType","PointRiskComparer","findIndex","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","isInteger","isFinite","isSampleValid","sample","isValid","composite","UiCapPlanFilters","isFilteringOrganization","selectedOrganizations","selectedTestMethods","recordStatusOptions","tm","ApplicationModuleId","ApplicationModuleService","applicationModules","AgDateMaskEditor","_maskOptions","alias","inputFormat","placeholder","min","max","_charWasPressed","charPress","input","setAttribute","_inputMask","mask","focus","setSelectionRange","MapService","mapPhotoFile","panZoom","showLatestView","viewPointSize","settings","getDashboardSettings","testIds","testId","addCellRendererParamsToColId","cellRendererParams","addCellRendererParamsToColField","colField","buildReportUrl","parameters","specialAction","ReportService","reportId","subscriptionCriteria","deliveryFormat","ExcelCellRenderer","gridOptions","gridOptionsWrapper","overrideContext","style","viewCompiler","viewTemplate","refresh","initialized","createDefaultLayoutItems","moduleId","requiredPermission","w","filterable","requiredApplicationModule","LocationTesting","compactMaxWidth","OrganizationSampleTemplateService","TaskStatusUpdateService","dialogService","showTaskStatusSelectorDialog","dialogResult","output","cancelled","statusInfo","validTasks","assignedUserEmail","diff","taskNoun","haveClause","statusName","showConfirmation","whenClosed","AgBoolCellRenderer","ParameterOptionService","parameterName","TaskGenerationRequestService","storageKey","settingsToPersist","getPlanSettings","pointZoneDistributionMethod","pointZoneDistributions","riskPriorities","dateSelectionType","NOT_APPLICABLE","PERCENTAGE","requestedTaskCount","TestResultsQueryFilters","outcomeStatusQueryFilters","limit","outcomeStatusQuery","PointService","attributeQuery","sampleIds","point","pointPhotoFile","getAttributesLike","partial","domHelper","isElement","HTMLElement","hasClass","cls","classList","contains","hasTrackingInfo","isOfType","nodeName","isAnchor","isButton","defaultOptions","pageTracking","enabled","getTitle","payload","instruction","config","clickTracking","element","appInsights","instrumentationKey","loaded","trackClick","trackPageView","loadAppInsights","addTelemetryInitializer","ipAddress","tags","baseData","properties","_attachPageTracker","_attachClickTracker","accountId","setAuthenticatedUserContext","clearAuthenticatedUserContext","uri","evt","delegateTarget","dimensions","di","components","getSeverityLevel","level","Critical","Information","Warning","trackError","trackTrace","telemetry","severityLevel","_convertDataToDictionary","trackException","subscribe","fragment","criteria","listener","querySelector","addEventListener","el","target","DateRangeQueryFilter","defaultOptionValue","includeAllTimeOption","excludeEmmaOptions","_querystringDateFormat","_displayDateFormat","_defaultDateRangeFilterOptions","_queryFilterDateRangeLocalStorageKey","_defaultOptionValue","caption","numericValue","displayCaption","_defaultDateRangeFilterOption","_dateRangeFilterOptions","_dateRangeOption","_dateRangeFilterOption","_enableTimeFilter","subtractDay","namedDateRangeFilterOption","dateRangeFilterOption","customDateRangeOption","momentStartDate","momentEndDate","subtract","configureDateRangeFilterOption","formattedDateRange","formatDisplayDate","AmsCoaExportService","amsCoaExport","MapDashboardViewOption","GlobalMessageSearchType","adhocReportSubscriptionGrid","subscriptionFrequencyType","dayOfWeek","deliveryDay","weekdays","lastDelivered","currentUsersTimeZone","ISO_8601","utc","clone","nextDeliveryStart","isStarted","resizable","OrganizationUtility","array","parentName","parentOrganizationName","concat","flattenOrganization","defaultSettings","maxConcurrentWidgetLoads","enableWidgetLoadTimingLogs","DashboardSettingsService","debounce","func","wait","immediate","timeout","args","later","callNow","getPointZoneOptions","ValidationErrorFormatter","apiErrorData","validationErrorMessage","defaultMessage","userErrorCode","userErrorMessage","formatValidationErrors","CustomError","setPrototypeOf","captureStackTrace","AgSampleIdCellRenderer","passed","setRowSelectable","selectable","dateCompare","sort","hasSpecification","confirmation","displayValue","suppressColumnVirtualisation","onFirstDataRendered","columnApi","autoSizeAllColumns","pointTestResultGrid","errorMessages","LoginErrorMessageProvider","httpResponseMessageOrApiError","CustomerTestImportDetail","validationControllerFactory","amsCoaExportService","validationController","createForCurrentScope","validateTrigger","change","ensure","required","satisfies","_","on","addObject","validate","valid","createAmsCoaExport","App","EventAggregator","DialogService","NavigationAuthorizer","SecurityService","navigationAuthorizer","securityService","organizationService","configure","withInterceptor","unauthenticatedStuffQueue","attachedPromise","attachedPromiseResolve","handleLogin","handleLogout","handleRouterNavigationSuccess","updateIsCurrnetUserInternal","currentYear","isCurrentUserInternal","locationTestingRouteActive","currentInstruction","addAuthorizeStep","AuthorizationCheckStep","addPreActivateStep","mapUnknownRoutes","route","redirect","PLATFORM","nav","icon","allowedUserTypes","ignorePermissions","activationStrategy","invokeLifecycle","authorize","checkConfigurationFlag","navTitle","getEffectiveUser","partialTestResultLabs","userLoginSubscription","userLogoutSubscription","routerNavigationSuccessSubscription","baseNavItems","navigation","hasAccess","hover","addClass","removeClass","dispose","isImpersonating","logout","loginDialogVisible","reject","wasCancelled","successMessage","___CSS_LOADER_API_IMPORT___","inputRow","remediationRootCauseGridOptions","rowDrag","rowPinned","removeItem","rowToRemove","getRowNode","applyTransaction","remove","pinnedTopRowData","flex","rowDragManaged","getRowStyle","onCellEditingStopped","addIndex","setPinnedTopRowData","AgGlobalMessageActionCellRenderer","wrapText","autoHeight","hide","getRowNodeId","globalMessageNotificationGridOptions","OrganizationConfigurationSetting","emptyExportTaskCollectionTemplateHeaderOptions","cellText","DashboardWidgetsQueryFilters","widgetId","defaultDateRangeOption","_taskTargetDateRangeFormat","orgCount","includeDateRange","includeMapPlan","mapPlanIds","noun","mapPlanFilterType","_taskTargetFilterRangeCaption","formatTaskTargetFilterCaption","groupColumnDefsBy","selectedViewByOption","setRowGroup","rowGroup","cdAny","colOrColGroupDef","setGroupByColumnDefinitions","autoSortedColumnStateColId","colState","applyColumnState","defaultState","buildAttributeQuery","validIndex","GenerateTasksDistributionMethod","PlanType","approvals","approvedByUser","approvalDateTime","globalMessageGridOptions","MapDashboardQueryFilters","confirmationTestingQueryFilters","taskAssigneeIds","remediationRootCauseIds","confirmationTestingQuery","DashboardWidgets","settingsService","VM_READY_TIMEOUT_MS","layoutItems","hasApplicationModule","hasPermission","vmReady","vmReadyResolve","reload","loadWidget","settingsPromise","getSettings","gridEl","querySelectorAll","String","gridStack","init","queue","destroy","enqueuedAt","performance","now","startedAt","enqueue","vmReadyOrTimeout","contentVm","loadData","loadTimings","timeoutId","queueWaitMs","round","loadMs","WidgetFilterPanel","canApply","defaultBindingMode","twoWay","WidgetShell","filtersOpen","displayMode","defaultCompactMaxWidth","resizeObserver","ResizeObserver","updateDisplayMode","contentRect","observe","bodyEl","disconnect","threshold","OPEN_STATUS_CODES","notStarted","inProgress","completed","rejected","MyRemediationsWidget","remediationService","userService","hasLoaded","activeStatFilter","sortParam","active","direction","queryFilters","getCurrentUserOrganizations","statuses","getRemediationStatuses","openStatusIds","getRemediationCounts","getRemediations","remediationStatusIds","counts","remediations","allRemediations","filterCaption","buildFilterSummary","applyStatFilter","applyFilters","runSearch","sortRemediations","r","aValue","bValue","generate","returnUrl","returnLabel","statusCodes","MyTasksWidget","taskService","mapService","planService","taskStatusUpdateService","taskRequestSubmissionService","isUpdatingStatus","isExportingCsv","hasSelectedTasks","allSelected","canEditTasks","mapSelectorOptions","canFilterByMapPlan","getMaps","getPlans","plans","toSelectorOptions","planSelectorOptions","getTasks","upcomingCount","isUpcoming","awaitingSubmissionCount","isAwaitingSubmission","allTasks","persistCurrentSelection","updateSelectionState","sortTasks","selectedTasks","selectStatus","updateTaskStatus","submitRequest","getExportableLabelsCsvFields","exportableFields","orgDefaultFields","showExportableFieldSelector","fieldSelection","exportLabelsCsv","blobUrl","link","dateString","replace","showLabelSelector","labelTemplateSelection","getTaskLabelPdfUrl","operationsTiming","getTaskStatuses","taskListDateRangeQuery","RemediationManagementWidget","pageNumber","pageSizeOptions","totalPages","isLoadingPage","hasSelectedRemediations","isReassigning","allRemediationStatuses","canEditRemediations","savedPageSize","pageSizeStorageKey","loadRemediationPage","sortBy","sortDirection","pagedResult","selectedRemediations","showUserSelector","email","reassignRemediations","loadRemediationPageWithSpinner","RequestStatusesWidget","requestService","getRequestStatusCounts","maxValue","sum","buildDatapoint","requestStatus","label","percent","linkUrl","chartData","datapoints","ManageTasksWidget","canUnassignSelectedTasks","isAssigning","isUnassigning","getTaskManagementCounts","loadTaskPage","overdue","assignTasks","tasksPlurality","unassignTasks","loadTaskPageWithSpinner","TestResultsWidget","testService","getTestResultCounts","generateLinkUrl","Dashboard","newsItemService","dashboardService","canViewPriceQuotes","canViewRequests","canViewResults","canViewAllTasks","canViewMyTasks","canViewAllRemediations","canViewMyRemediations","canViewMaps","canViewPlans","canFilter","dashboardQueryFilters","todaysDashboardQuery","testResultListQuery","refreshRequestChartData","refreshResultChartData","refreshMyTaskData","refreshTaskManagementData","refreshMyRemediationData","refreshRemediationManagementData","outcome","testResultQuery","requestStatusCounts","requestStatusCount","buildRequestStatusDatapoint","backgroundColor","generateStatusLinkUrl","requestChartLinkUrl","requestChartData","testResultCounts","testResultCount","buildTestResultDatapoint","generateTestResultLinkUrl","resultChartLinkUrl","resultChartData","getTaskCounts","taskCountsToday","taskCountsWeek","myTaskCountsToday","myTaskCountsWeek","getCriticalTaskCounts","criticalTaskCounts","criticaltaskCounts","myRemediationCounts","remediationCounts","_params","ensureSingleApplyFilterHandler","pendingRedirectAfterlogin","applyFiltersSubscription","handleApplyFilters","clearFiltersSubscription","handleClearFilters","getNewsItems","getDashboardLinks","refreshWidgetData","currentUser","newsItems","currentUserOrganizations","dashboardLinks","taskStatuses","remediationStatuses","planSummaries","taskStatusCodes","taskListQuery","mapTaskListQuery","criticalStatuses","ts","cs","remediationStatusCodes","submitCustomCertiticateForm","customCoaForm","showSuccessOverlay","emptyExportTaskCollectionTemplate","columns","formattingOptions","headerOptions","footerOptions","okButtonTitle","Alert","cancelButtonTitle","Confirmation","UserSelector","ExportableFieldSelector","labelTemplateType","LabelSelector","placeholderText","captionPropertyName","valuePropertyName","NameValueItemSelector","DataGridReorderDialog","AgGridDialog","baseOptions","remediationPointTestHistoryGridOptions","setDateTimeEditor","segmentationSampleGridOptions","frameworkComponents","selectEditorComponent","getMainMenuItems","defaultItems","getId","collectionDateMenuItems","subMenu","checked","MASK","enterMovesDown","enterMovesDownAfterEdit","rowSelection","suppressRowClickSelection","enableFillHandle","fillHandleDirection","Aurelia","Router","RoleService","aurelia","roleService","applicationModuleService","startSessionExpirationChecks","setInterval","session","getCurrentSession","expiration","navigateToLogin","sessionExpired","username","password","verifyIdentityToken","setUserId","setCurrentSession","isInternal","refreshCurrentPermissions","publish","getCurrentPermissions","currentPermissions","newPassword","newPasswordConfirm","Cookies","navigateToLoginScreen","clearUserId","messageCount","parseLocalStorage","valueString","permissionCode","applicationModuleId","currentSession","isGlobalMessenger","canModifyCustomerData","impersonatedUser","getImpersonatedUser","impersonatedUserId","workingUnderOrganization","getWorkingUnderOrganization","impersonatedOrgId","atob","exp","setRoot","redirectAfterLoginFragment","navigate","isCurrentUserLoggedIn","navigateToApp","hash","getCurrentSessionUser","orgId","getApplicationModules","refreshApplicationModules","org","AgStatefulGridBuilder","_gridOptions","_minColumnStateColumnWidth","_defaultGridOptions","columnState","base","columnStateString","_columnStateLocalStorageKey","pivotState","_pivotStateLocalStorageKey","overrideInvisibleColumnWidths","applyOrder","setPivotMode","_saveColumnStateDebounce","getColumnState","isPivotMode","trimmedColumnState","sortIndex","pivot","pivotIndex","rowGrouproupIndex","rowGroupIndex","mergedDefaultColDefs","mergedGridOptions","gridKey","onGridReady","onColumnMoved","onColumnResized","onSortChanged","onColumnPivotModeChanged","onColumnPivotChanged","onColumnRowGroupChanged","loadColumnStateFromLocalStorage","saveColumnStateToLocalStorage","domLayout","ExportTaskCollectionTemplateDetail","bindingEngine","exportTaskCollectionTemplateService","canEdit","exportTaskCollectionTemplate","object","propertyName","organizationRules","organizationConfiguration","removeObject","createExportTaskCollectionTemplates","updateExportTaskCollectionTemplates","mapFieldMappingsToExportColumns","exportTaskCollectionTemplateColumns","fieldMappings","displayName","withMessage","minItems","rules","headerCellTextRules","footerCellTextRules","getExportTaskCollectionTemplate","getExportTaskCollectionTemplateColumns","setupValidation","ExportTaskCollectionTemplateList","dataGridSelectAll","headerCellTemplate","headerClass","exportTaskCollectionTemplateListQueryFilters","selectedRecordStatus","canEditExportTaskCollectionTemplates","filterDataGridItems","itemsToDelete","deleteExportTaskCollectionTemplates","dataItems","exportTaskCollectionTemplateIds","handleDeleteError","idsToDelete","selectedDataGridItems","getApiErrorMessage","getExportTaskCollectionTemplates","exportTaskCollectionTemplates","GlobalMessagingService","searchType","Default","SegmentationSampleGridColDataFactory","segmenationTemplates","_segmentationTemplates","_samples","_requiredSegmentationTemplates","_lookupSegmenationTemplates","_nonLookupSegmentationTemplates","_groupedLookupSegments","groupedLookupSegments","sts","groupedLookSegments","filterSegmentationTemplatesByType","fixupSegmentNames","getRequiredSegmentationSegments","_segmentationTemplateSelectorOptions","unshift","segmentNames","n","localeCompare","sensitivity","segmentKeys","segmentKey","uniqueSampleSegmentKeys","matchedTemplateSegments","seg","lookupType","filteredTemplates","lst","segmentId","HttpClientConfigurator","clientVersion","withBaseUrl","withHeader","portalClientVersion","apiErrorsInterceptor","tryAddAuthentication","tryAddImpersonation","tryAddWorkingUnderOrganization","tryUpdateAuthentication","checkClientVersion","content","responseError","showClientVersionReloadDialog","OutcomeStatus","getOutcomeStatusOptions","PASS","FAIL","INCOMPLETE","LabService","searchText","lab","GlobalMessageDetail","globalMessagingService","form","isReadOnly","simplemdeEditor","handleFormChange","getGlobalMessages","globalMessage","approveGlobalMessage","createGlobalMessage","updateGlobalMessage","deleteGlobalMessage","isCurrentUserGlobalMessenger","createDateTime","loadGlobalMessage","currentUserId","editorTextarea","toolbar","insertTexts","codemirror","handleEditorChanged","togglePreview","off","toTextArea","GlobalMessageList","globalMessageService","globalMessages","setRowData","loadGlobalMessageData","rowData","globalMessageGrid","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","parentElement","parentNode","nodeType","TestMethodManagementService","organizationTestMethodIds","DistributionGroupService","FaqDetail","ValidationControllerFactory","PageContext","FaqService","faqGroupService","faqService","selectedFaqGroups","faq","faqGroupId","faqGroupName","getFaq","getFaqGroups","faqGroups","selectedFaqGroup","ValidationRules","handleNotFound","saveFaq","savedFaq","ordinal","observable","FaqGroupDetail","getFaqGroup","saveFaqGroup","FaqGroupList","CompareUtility","selectedActiveFaqGroups","faqGroupsView","setSelectedActiveFaqGroups","updateFaqGroupsView","lowerCasedFilterText","orginalOrdinal","deleteFaqGroups","faqGroupsToDelete","faqGroupIds","multipleFaqGroups","$event","detail","formElement","hasAttribute","updateFaqGroupOrdinals","faqGroupDataGridViewModel","gridApi","setSortModel","FaqList","selectedActiveFaqs","faqsView","setSelectedActiveFaqs","getFaqs","faqs","updateView","question","answer","deleteFaqs","faqId","faqsToDelete","faqIds","multipleFaqs","updateFaqOrdinals","faqDataGridViewModel","isVisible","Glossary","glossaryTermService","getGlossaryTerms","glossaryTerms","glossaryTermGroups","buildGlossaryTermGroups","glossaryTermGroupVisibilities","updateGlossaryTermGroupVisibilities","letter","gt","glossaryTermGroup","GlossaryTermDetail","getGlossaryTerm","saveGlossaryTerm","GlossaryTermList","selectedActiveGlossaryTerms","glossaryTermsView","setSelectedActiveGlossaryTerms","updateGlossaryTermsView","deleteGlossaryTerms","glossaryTermId","glossaryTermsToDelete","glossaryTermIds","multipleGlossaryTerms","HelpNavigationMenu","navItems","bindable","Support","StringResourceService","SupportRequestService","stringResourceService","supportTopicService","supportRequestService","getSupportTopics","supportTopics","getStringResources","disclaimer","selectedSupportTopics","supportFormMessage","supportRequest","supportTopicId","createSupportRequest","SupportTopicDetail","saveSupportTopic","topic","getSupportTopic","SupportTopicList","deleteSupportTopics","topics","MarkdownEditor","bindingMode","uploadedFileService","handleEditorChange","setEditorValue","editor","SimpleMDE","buildToolbar","image","createImageToolbarItem","markdownEditor","className","showFileDialog","imageFileInputElement","uploadFiles","imageUploadPath","progress","uploadPercent","total","getWrapperElement","lastChild","start","end","startPoint","getCursor","endPoint","getState","getLine","line","ch","replaceRange","getSelection","replaceSelection","setSelection","UserGuideDetail","userGuideService","htmlContent","editMode","getUserGuides","userGuides","getUserGuide","marked","StringUtility","getRandomString","saveUserGuide","UserGuideList","selectedActiveUserGuides","userGuidesView","setSelectedActiveUserGuides","updateUserGuidesView","deleteUserGuides","userGuideId","userGuidesToDelete","userGuideIds","multipleUserGuides","TaskGenerationClientSettings","clientSettings","PromiseQueue","concurrency","_pending","_activeCount","dequeue","Accordion","$accordionElement","$accordion","Foundation","multiExpand","BooleanUtility","parsePrimitive","foundation","AccordionItem","containerless","ContentSizeChangeCustomAttribute","handleSizeChange","$element","dispatchEvent","CustomEvent","eventName","bubbles","DataDropdownCustomAttribute","$dropdown","dropdown","anchorElement","$anchor","$anchors","$currentAnchor","close","DataEqualizerCustomAttribute","initializeEqualizer","$equalizer","observer","MutationObserver","childList","characterData","removeEventListener","equalizer","reInit","PropertyKeys","ALL_PROPERTIES","ColDefUtil","DataGrid","Container","ViewCompiler","BindingEngine","disableAutosizeColumns","handleMouseDown","handleMouseUp","handleMouseMove","mousePressed","scrollInterval","clearInterval","gridViewportBoundingRectangle","gridViewport","getBoundingClientRect","clientY","top","scrollTop","bottom","scrollHeight","clientHeight","bindingContext","gridDataSubscription","gridData","collectionObserver","gridDataCollectionChanged","supressSetRowData","updateGridDataSubscription","changeRecords","changeRecord","rowDataTransaction","addedCount","removed","reinitialize","initialize","suppressLoadingOverlay","suppressNoRowsOverlay","rowHeight","headerHeight","columnDef","templateMap","createCellRenderer","tooltip","tooltipField","headerTemplateMap","headerComponent","createHeaderComponent","groupTemplate","groupTemplateMap","groupRowRenderer","createGroupRenderer","headerTooltip","saveColumnState","Grid","globalEventListener","sizeColumnsToFit","au","setHeight","eventType","eGui","localSupressCellRenderRefresh","supressCellRenderRefresh","localViewCompiler","localOverrideContext","columnStateLocalStorageKey","saveColumnStateDebounce","minColumnStateColumnWidth","DataTogglerCustomAttribute","$toggler","toggler","DPGlobal","validParts","Constructor","stopPropagation","preventDefault","is","trigger","viewDate","showMode","modes","viewMode","navStep","moveHour","moveDate","fill","getHours","getMinutes","getSeconds","startViewMode","_setDate","minView","month","year","hours","minutes","seconds","nonMilitaryTime","day","substr","oldViewMode","autoclose","prevViewMode","dayMonth","startYear","Infinity","startMonth","endYear","endMonth","titleFormat","picker","toggle","todayBtn","updateNavArrows","fillMonths","prevMonth","getDaysInMonth","getUTCDay","weekStart","nextMonth","clsName","html","calendarWeeks","getDay","calWeek","onRender","todayHighlight","currDate","daysOfWeekDisabled","datesDisabled","weekEnd","empty","actual","tts","ampm","minuteStep","eq","yearCont","originalShow","show","blur","Datepicker","isAttached","ensureInitialized","updateValue","$datepicker","inputElement","forceParse","pickTime","minSelectableDate","maxSelectableDate","datepicker","setDatePickerValue","update","stringValue","checkValid","setStartDate","setEndDate","Chart","defaults","global","responsive","defaultFontFamily","DoughnutChart","applyChartData","chartCanvas","doughnutChart","getContext","animation","duration","cutoutPercentage","maintainAspectRatio","legend","display","tooltips","dp","noData","labels","datasets","borderWidth","borderColor","ErrorTooltip","tooltipContainer","Tooltip","tipText","createDateRangeFilterOption","isFuture","createDateRangeFilterOptions","DateRangeFilter","titlePropertyName","clearDateRange","clearFilterSubscription","selectedOption","defaultOption","FilterButtons","MapPlanFilter","defaultFilterType","selectedFilterType","OrganizationFilter","isFiltering","clearSelectedOrganizations","TestMethodFilter","clearSelectedTestMethods","CustomDayHeader","props","FullCalendar","eventClick","calendar","initialDate","DateUtility","stringToMoment","Calendar","calendarElement","plugins","momentPlugin","interactionPlugin","dayGridPlugin","timeGridPlugin","headerToolbar","left","center","right","height","initialView","slotDuration","navLinks","dayMaxEvents","dayMaxEventRows","eventMaxStack","expandRows","dayHeaderContent","arg","nowIndicator","handleWindowResize","addEventSources","render","gotoDate","changeView","removeAllEventSources","addEventSource","events","FullHeightCustomAttribute","fixedHeightOverride","headerBounds","getElementsByTagName","footerTop","elementBounds","currentTop","shrink","globalResources","InfoTip","plugin","KeyholdPreventFocusCustomAttribute","handleKeyDown","handleKeyUp","shiftKey","ctrlKey","enable","disable","tagName","activeElement","oldDisabledValue","controller","disableFocus","enableFocus","MiniDoughnutChart","fillColor","NotifyFormChangesCustomAttribute","enableDatepicker","datepickerAdded","enableSelect2","select2Added","customEvents","customEvent","srcElement","RecordChangeList","operation","RequiredCustomAttribute","requiredIndicator","createTextNode","updateIndicatorInDOM","requiredIndicatorAdded","removeChild","ScrollIntoViewCustomAttribute","firstChild","parentBounds","windowTop","childBounds","Select2","TaskQueue","taskQueue","closeDropdownOnEnterKey","$select","owningView","myView","controllers","boundProperties","bp","binding","targetProperty","queueTask","trySetDefault","groupPropertyName","groupedItems","updateSelection","keyCode","select2","selectedItems","selectedItem","isDetached","term","tag","itemValue","minimumResultsForSearch","enableCustomItems","allowClear","dropdownAutoWidth","itemTemplate","templateResult","findItemByValue","parentBindingContext","createTag","insertTag","noResults","matcher","getSelectedItems","itemToRemoveIndex","getSelectedValues","disablePlaceholder","selectedItemsBound","selectedItemBound","selectedValuesBound","selectedValueBound","finalValue","Select2ItemTemplate","TargetInstruction","processContent","compiler","resources","innerHTML","noView","targetInstruction","elementInstruction","Selector","disabledPropertyName","getSelect2Item","getSelect2Data","tokenSeparators","textContent","noResultsMessage","dispatchChangeEvent","select2Plugin","dataAdapter","current","callback","pendingElements","selectElement","SelectorItemTemplate","Slider","handleSliderChange","$slider","sliderPlugin","valueInput","setHandles","getTimeOptions","times","quarterHours","j","time","twelveHrClockOffset","TimeSelector","ArrayPropertyMapValueConverter","BooleanValueConverter","CapPlanTestMethodFormatValueConverter","cptm","testMethodBillCode","CommaSeparateValueConverter","CurrencyValueConverter","numeral","DateFormatValueConverter","defaultValue","convertToLocal","KeysValueConverter","isNullOrWhitespace","FilterValueConverter","GroupByValueConverter","objects","rv","JsonValueConverter","LookupAndMapValueConverter","keyPropertyName","NumberFormatValueConverter","NumberValueConverter","numberValue","ObjectKeysValueConverter","PercentValueConverter","decimalPlaces","toFixed","SortValueConverter","TakeValueConverter","TestMethodFormatValueConverter","defaulCsvExportParams","skipColumnGroupHeaders","skipRowGroups","allColumns","defaultExcelExportParams","ext","fileNameSuffix","createFileName","csvExportParams","excelExportParams","defaultCsvExportParams","agGridDialogRef","DialogController","isMessageHtml","columnOrders","columnOptions","directionOptions","pop","addColumnOrder","exportableFieldKeys","labelTemplateService","labelTemplates","selectedLabelTemplate","getLabelTemplates","filteredLabelTemplates","lt","updateSearchResults","matchingUsers","getUsers","firstName","lastName","ClientRefresh","clientIsCurrent","version","newClientVersion","clientIsCurrentSubscription","handleClientIsCurrent","refreshClientSubscription","handleClientRefresh","GlobalMessageNotifier","getContextMenuItems","viewBy","Read","Deleted","All","_globalMessageCount","getUserMessageCount","globalMessageCount","getUserGlobalMessageNotifications","agGridDialogModel","getMessageNotifications","agGridOptions","showAgGridDialog","globalMessageId","setDataValue","readUserMessage","setUserMessageCount","unReadUserMessage","deleteUserMessage","unDeleteUserMessage","messageActionCellRendererParams","readMessage","unReadMessage","deleteMessage","unDeleteMessage","userMessageCountChangedSubscription","handleUserMessageCountChanged","HeaderAccountDropdown","userFilterText","orgFilterText","usersAreLoading","orgsAreLoading","userView","usersView","orgsView","updateImpersonatedUser","updateWorkingUnderOrganization","updateUserSearchResults","updateOrgSearchResults","findOrganizations","startImpersonation","simplifyUser","navigateToDashboard","stopImpersonation","startWorkingUnderOrganization","organizationName","HeaderNavigationMenu","handleImpersonationStart","handleImpersonationStop","updateNavigationItems","userImpersonationStartSubscription","userImpersonationStopSubscription","ExportTaskCollectionTemplateService","TestResultService","AgPointRemediationCellRenderer","pointRemediationGrid","testMethodManagementGridOptions","canHide","emptyExportTaskCollectionTemplateFooterOptions","ignoreQuickFilter","partialTestResultGrid","getQuickFilterText","qualitativeResult","checkbox","groupSelectsChildren","TaskGenerationRequest","TaskGenerationZoneDistribution","zoneDistributions","zonePercentageCount","DISCRETE","zone1","zone2","zone3","zone4","getZoneForServer","getType","getZoneForUI","PartialTestResultService","partialTestResultListQuery","LabelTemplateList","fieldNameRules","disabledForStandardMode","disabledForBatchMode","zoomLevelIndex","zoomLevels","canZoomIn","canZoomOut","revertingLabelTemplateType","allowAddRemoveElements","selectedElement","canEditLabelTemplates","labelTemplateTypeOptions","getOptions","getLabelTemplate","batchTestMethods","subscribePropertyChanges","sampleLabelFontSize","initializeDisplayOnlyElements","loadFieldOptions","uiLabelTemplateWidthChangedSubscription","propertyObserver","handleUiLabelTemplateWidthChanged","uiLabelTemplateHeightChangedSubscription","handleUiLabelTemplateHeightChanged","uiLabelTemplateTypeChangedSubscription","handleUiLabelTemplateTypeChanged","displayOnlyElementManager","oldType","clearElements","tearDownElementValidation","templateType","createDisplayOnlyElements","setupOrganizationConfigurationValidation","missingOrganizationConfiguration","tearDownOrganizationConfigurationValidation","displayOnly","stopImmediatePropagation","objectName","fieldName","oldElement","validateElement","setupElementValidation","configureFieldNameOptionsForBatchTestMethods","objectNameOptions","fieldNameOptions","taskLabel","when","mode","aggregateResult","errorElements","showErrorOverlay","saveLabelTemplate","savedLabelTemplate","selectedLabelTemplateTypes","selectedActiveLabelTemplates","uiLabelTemplatesView","setSelectedActiveLabelTemplates","updateLabelTemplatesView","uiLabelTemplates","matchSelectedLabelTemplateTypes","configuredForCaption","matchSelectedRecordStatus","filteredIsActiveValue","deleteLabelTemplates","labelTemplatesToDelete","labelTemplateIds","LabDetail","labService","getLab","isValidPostalCode","labId","saveLab","labDetailId","LabList","isInternalView","updateLabsView","labs","labsView","l","address1","address2","getAdminLabs","Layout","$filterArea","Privacy","isUserLoggedIn","navigateBack","Terms","CapPlanDetail","capPlanService","collectionTypeOptions","operationsTimingOptions","canEditCapPlans","canViewAudit","propertyDisplayNames","TestMethods","SampleDescriptionsJson","TestingDayCount","IsActive","selectedLab","labOptions","labExternalSource","sampleDescriptions","succeeded","getOrganizations","getLabs","getCapPlan","organizationOptions","loadViewFrom","formLabIdSubscription","labIdChanged","customRule","uiCapPlan","satisfiesRule","testingDayCount","validateOnBind","getCapPlanRecordChanges","recordChanges","CapPlanList","capPlanFilter","selectedCapPlans","deleteSelectedCapPlans","setQuickFilter","loadCapPlans","clear","selectedNodes","getSelectedNodes","isGridRowSelected","getCapPlans","capPlans","rowNode","bulkDeleteCapPlans","updatedCapPlanList","getTestMethods","onSelectionChanged","handleAGGridSelectionChanged","capPlanGrid","AutoRemediationCustomElement","remdiationUserType","Assigned","Approval","assignedUserFullName","toUserFullName","approvalUserId","approvalUserFullName","deactivateRoutineTaskGeneration","autoRemediation","PlanSelectorCustomElement","getOrganizationPlans","organizationPlans","planOptions","op","planName","PointRoomSelectorCustomElement","pointRoomService","getOrganizationPointRooms","organizationPointTypes","roomTypeOptions","pt","getOrganizationPointTypes","PointTypeSelectorCustomElement","pointTypeService","pointTypeOptions","RelatedCapPlansCustomElement","relatedCapPlans","getRelatedCapPlans","SampleDescriptionCustomElement","SubmitButtonsCustomElement","submittingEvent","formSubmittedResult","submittedEvent","toEntity","createCapPlan","updateCapPlan","entityId","TestMethodsSelectorCustomElement","testMethodService","testMethodOptions","isWorkingUnderOrganization","CustomerTestImportService","customerTestImportService","acceptFormats","testDataFile","testDataFileInput","saveCustomerTestImport","CustomerTestImportList","uploadDateRangeOptions","defaultUploadDateRangeOption","selectedUploadDateRangeOption","loadCustomerTestImports","updateCustomerTestImportsView","customerTestImports","customerTestImportsView","getCustomerTestImports","uploadStartDate","uploadEndDate","customerTestImport","uploadDateTime","processedDateTime","totalRecordCount","successfulRecordCount","failedRecordCount","LocationTestingNavigationMenu","routes","MapDashboard","remediationRootCauseService","testMethodGroupOptions","scale","pointZoneOptions","panZoomSettings","innerPointViewSize","pointFilterText","showFailedOnly","savePanZoomSettings","canViewAllRedmediations","pointSelectionMode","SINGLE","selectedViewOption","sidebarView","sidebarDetailViews","currentSidebarDetailView","playbackFrames","currentPlaybackFrame","isPlaying","mapDashboardQueryFilters","pointMouseDown","pointMouseMove","pointMouseUp","pointHover","pointHoverEnd","stopPlayback","isHovered","mapSvgElement","reloadData","enableDblClickZoom","disableDblClickZoom","loadPlaybackData","MULTI","setView","loadPointData","getPoints","originalPoints","dirtyPoints","originalPoint","updateMapPoints","fetchConfirmationTestResultValues","confirmationTestValueOptions","getDailyResults","togglePlayback","playInterval","pointRemediations","selectedPoint","xOriginal","yOriginal","ensurePointInView","mapContainerBounds","mapContainer","absolutePointX","absolutePointY","pan","pointBoundary","maxPointRadius","setSelectedPoint","showPointDetail","loadPointDetailData","pointTestResults","pointPlans","failedPointTests","pointHasOverdueTasks","getPointTests","getPlansByPoint","getHasOverdueTasks","pointTestResultGridOptions","pointPlanGridOptions","pointRemediationGridOptions","generatePointTestMetrics","pointTestMetrics","failedCount","passedCount","updatePointsView","DELETED","pointsView","checkFailedTest","filterOnRecordStatus","latestSample","tests","historical","ROUTINE","VECTOR_SWAB","CORRECTIVE_ACTION","acceptAndSetSingleView","loadPromise","getMap","getPlanFilterOptions","getTestMethodFilterOptions","getTaskAssigneeFilterOptions","getPointTypes","ignoreSpecificationPointTypes","getRemediationRootCauseList","pointRoomOptions","taskAssigneeOptions","remediationRootCauseOptions","rrc","loadResults","pointTestResultIsSelected","pointPlanGrid","fit","zoomEnabled","minZoom","onZoom","onPan","zoom","initializePoints","saveDashboardSettings","getZoom","getPan","pointMouseDownStartingPoint","clientX","draggingKeyPoint","draggingKeyStartingPoint","disablePan","getTranslatedPointCoordinates","selectionRubberband","draggingPointCoords","draggingOffset","planPointMouseMouse","abs","movementX","movementY","deselectOtherPoints","draggingPointsMoved","clientOffset","planPointMouseUp","selectionMouseUp","enablePan","mapSelectedViewToCollectionTypeFilter","getLatestResults","getHistoricalResults","latestResults","historicalResults","updateLatestResults","updateHistoricalResults","warningCount","totalFailedCount","currentTest","latestResult","ensureResult","historicalResult","getSelectedRows","failedTestId","zoomIn","zoomOut","createSVGPoint","cursorPoint","matrixTransform","getScreenCTM","inverse","pixelX","pixelY","confirmationTestValueOptionsSubscription","testMethodGroupChanged","MapDetail","mapAttributeService","supportedPhotoFormatMessage","canEditMaps","fileReader","FileReader","handlePhotoLoad","getMapAttributes","usedMapAttributes","mapAttributeNames","mapAttributeValues","createMapAttribute","mapPhoto","photoUrl","valuePlaceholder","isLoadingValues","newName","originalPlaceholder","mapPhotoInput","readAsDataURL","mapPhotoDataUrl","mapAttribute","saveMap","savedMap","getMapRecordChanges","MapImage","Image","imageElement","createElementNS","setAttributeNS","src","MapList","selectedActiveMaps","mapListQueryFilters","mapsView","setSelectedActiveMaps","updateMapsView","matchSelectedOrganizations","loadMaps","userOrganizations","deleteMaps","mapsToDelete","multipleMaps","planManagementViewBySelectorOptions","replacementDescription","impactCounts","organizationCount","planCount","unassignedTaskCount","specificationCount","PlanManagementList","planManagementService","viewBySelectorOptions","_selectedViewByOption","canEditPlanManagement","getTestMethodReplacementImpactCounts","replacementTestMethods","showNameValueItemSelector","replacementTestMethodId","replaceTestMethod","loadActiveTestMethods","fetchActiveTestMethodPlans","testMethodPlans","planManagementGrid","groupByColumnDefinitions","GenerateTasks","timeZoneService","taskGenerationRequestService","planCoverage","calcualateEndDate","taskGenerationRequest","BY_MONTH","monthlySwabs","BY_WEEK","weeklySwabs","canEditPlans","wasPausedAtLoad","showMainSection","showScheduleSection","showRiskDistributionSection","showCollectionTimesSection","showBlackoutSection","taskCountDisabled","planPointRisks","zoneDistributionMax","initSchedule","timeCaptions","mapping","handleRequestedPointCountChanged","handlePointZoneDistributionMethodChanged","scheduleMinDate","MONTHLY_SWAB","WEEKLY_SWAB","BY_DAY","DAILY_SWAB","weekBasedTaskDistribution","SEQUENTIAL","copy","pointDistributionMethod","mapDateSelectionTypeToPointDistributionMethod","highTaskRiskPriority","percentage","riskLevels","high","mediumTaskRiskPriority","medium","lowTaskRiskPriority","low","createAllZonesForServer","tomorrow","planSettings","SINGLE_DATE","requestedPointCountSubscription","requestedPointCountZone1Subscription","requestedPointCountZone2Subscription","requestedPointCountZone3Subscription","requestedPointCountZone4Subscription","pointZoneDistributionMethodSubscription","dateSelectionTypeSubscription","monthlySwabsSubscription","weeklySwabsSubscription","startDateSubscription","generateRequestedTaskCount","showZonePercentageCounts","multiplier","getMultiplier","tasksToBeGenerated","pausedOrLocked","planTypesUsingSchedule","planTypesUsingBlackout","planPointRiskBreakdown","planPointZoneBreakdown","zones","getPlanTypes","getPlan","getTimeZones","timeZones","pausedPointCount","generatePointBreakdowns","isPaused","initializeTaskRequest","updateSections","endDateSubscription","errorMessageRequestedTaskCount","DATE_RANGE","isSame","isAfter","taskCount","zoneOrPercentErrorMessage","zoneDoesNotHaveEnoughPointsErrorMessage","zoneValue","validZoneOrPercent","planHasEnoughUniquePoints","countOrPercent","zonePointCount","zonePointMax","blackoutDate","dateToRemove","prepareTaskRequestForSubmission","submit","createAllZonesForUI","fromTaskGenerationRequest","savePlanSettings","planCoverageType","exportPlanCoveragePoints","PlanCoveragePieChart","chart","position","onClick","chartElements","_model","handleChartClick","collectedCount","scheduledCount","collectedAndScheduledCount","unusedCount","PlanDetail","pointAttributeService","taskDistributionMethodWeekBased","taskDistributionMethodEven","EVEN","taskDistributionMethodRandom","RANDOM","Name","Description","Remediation","Schedule","IsPaused","planPointSelectorViewModel","resetView","oldLabId","oldLab","loadTestMethods","planTypesUsingCollectionTimes","updateGridPoints","getPointAttributes","canEditStartDate","planLabIdChangedSubscription","handlePlanLabIdChanged","planTypeSubscription","handlePlanTypeLevelChanged","taskDistributionMethodSubscription","handleTaskDistributionMethodChanged","weekday","setHours","startTime","selectedTargetCollectionTime","bParts","aParts","targetCollectionTimeToRemove","targetCollectionTimesValidationResult","targetCollectionTimesInvalid","savePlan","updatedPlan","getPlanRecordChanges","PlanList","selectedPlanTypes","selectedPausedStates","selectedCollectionTypes","selectedActivePlans","selectedRecordStatuses","canDeletePlans","scheduleCycleDays","plansView","canGenerateTasks","pointCount","setSelectedActivePlans","updatePlansView","selectedPlanId","navigateToGenerateTasks","matchSelectedPlanTypes","matchSelectedPausedStates","remediationStatus","matchSelectedCollectionType","isFilteringPlanTypes","isFilteringPausedStates","isFilteringRecords","filterRecordStatusState","isFilteringCollectionType","ct","deletePlans","plansToDelete","multiplePlans","PlanPointSelector","pointGridConfig","isExternalFilterPresent","selectedOnly","doesExternalFilterPass","allPointsSelected","onFilterChanged","setupFilterOptions","pointGridFullHeightViewModel","updateSourcePointSelections","planPoints","gridPoints","updatePlanPoints","gridPoint","getFilteredGridPoints","convertPointAttributeSelectionsToPointAttributes","pointSummaries","pointIds","pointSummary","pp","PointDetail","canEditPoints","pointRiskOptions","getPoint","existingPointTypes","usedPointAttributes","mapPhotoUrl","otherPoints","pointAttributeValues","createPointAttribute","setupPointAttributeValidation","mapImageBoundingRectangle","mapSvg","clientWidth","dblClickZoomEnabled","beforePan","oldPan","newPan","isPanning","interval","mapImage","bringPointIntoView","onload","tearDownPointAttributeValidation","pointPhotoInput","pointPhotoDataUrl","savePoint","savedPoint","cursorpt","getPointRecordChanges","PointList","compareValues","selectedActivePoints","setSelectedActivePoints","loadPoints","pointAttributeFiltersInUse","deletePoints","pointsToDelete","multiplePoints","RemediationDetail","canViewRemediations","canSetAssignStatus","canSetApprovalStatus","currentView","views","testsFilterText","Status","updateTestsView","getRemediation","getMapTests","updateFileViews","remediationSubscription","remedationStatusChanged","testsView","testMethodDisplayName","collectedDate","isMobile","testsGridOptions","preFilesView","postFilesView","preFilesGridOptions","postFilesGridOptions","saveRemediation","savedRemediation","postFileInput","postFile","preFileInput","preFile","saveRemediationFile","filePath","deleteRemediationFile","getRemediationRecordChanges","remediationRootCauseId","failedTest","dialogTitle","getPointTestHistory","pointCellRendererParams","showPointHistoryGrid","testsGrid","fileCellRendererParams","downloadRemediationFile","preFilesGrid","postFilesGrid","RemediationList","assignedFilterOptions","assignedFilter","onlyAssignedToMeFilterOptions","onlyAssignedToMeFilter","selectedActiveRemediations","remediationsView","setSelectedActiveRemediations","updateRemediationsView","approvalUserEmail","statusCaption","remediationStatusesFilter","updateFilterDefaults","loadRemediations","getFilters","setStatusCaptions","deleteRemediations","remediationsToDelete","remediationIds","multipleRemediations","RequestDetail","requestDefaultsService","selectedSamples","_desriptionBuilderLocalStorageKey","defaultSampleDescriptionFields","getFields","canEditRequests","toggleSampleCombinationButtons","defaultDescription","sampleDescriptionFields","selectedSampleDescriptionFields","selectedSampleDescriptionFieldsCollectionChangedSubscription","selectedSampleDescriptionFieldsCollectionChanged","generateDescription","savedFieldsString","savedFields","selectedSavedFields","updateDescriptions","setAllCanCombineWithSelected","canCombineWithSelected","checkCanCombineWithSelected","enableCompositeButton","testMethodCategory","checkSampleHasQuantitativeTest","firstSelectedSample","groupedSamples","isComposite","pointZone","compositeSamples","maxSamplesPerComposite","sampleParts","sampleIndex","removedSample","removeSampleValidation","compositeSample","createCompositeSample","addSampleValidation","clearSelectedSamples","samplePart","uncompositedSampleIndex","uncompositedSample","taskId","getOrganization","getConfiguration","organizationDefaultLabCodes","testMethodExternalSources","pointRoom","taskCollectedDateTime","taskAssignedUserFullName","taskOperationsTimingCaption","getOperationsTimingCaption","taskCollectionType","category","captionA","captionB","getRequestDefaults","lvOrgRequestDefaults","poRequired","lvPoRequired","lvIncludePo","samplesMissingTests","TaskDetail","pointSampleDescriptions","pointSampleDescriptionValidationRules","getTestResultSummaries","failedTestResultSummaries","failedTestResultSummary","failedTestPoints","togglePointSelection","pointSampleDescription","sampleDescription","days","targetDateTime","collectionTime","taskStatusId","assigningUserId","createTasks","tryBringPointIntoView","usersLoading","sampleSubmitted","paramsPlanId","createNew","getTask","discretionaryPlans","targetDate","targetTime","setTime","collectedTime","assignedUser","getUser","getRequests","requestDate","receiveDate","startOfTestingDate","dateTime","mins","getPaddingDateTimePart","combineDateAndTimeToUtcString","saveTask","timeString","localDateTimeString","localDateTime","utcDateString","utcTimeString","getTaskRecordChanges","TaskList","selectedActiveTasks","LIST","taskListQueryFilters","canUnassignTasks","canSubmitRequests","selectedOrganizationId","tasksView","setSelectedActiveTasks","setUnassignAbility","setRequestSubmissionAbility","isSelectedChanged","updateTasksView","dataGridFullHeightViewModel","calendarFullHeightViewModel","calendarViewModel","extendedProps","unix","mapName","operationsTimingCaption","pointType","pointRiskCaption","testMethodsCaption","testMethodsHoverCaption","loadFilterOptions","loadTasks","loadTaskLabelTemplates","mapIdsForPoints","pointMobileOptions","setTasks","setDates","setCaptions","loadPlanColorMap","planColorMap","calendarTasks","groupedTasks","d1","d2","len","firstTask","lastTask","taskCalendarEvents","planSummary","colorHex","taskLabelTemplates","canExportLabelsPdf","existingTask","taskStatus","pointRisk","deleteTasks","handleActionError","updateTasks","deselectAll","tasksToActOn","messagingOptions","getActionMessagingOptions","preActionFunction","actionData","confirmationTextFunction","toggleLoader","waitingText","showInfoOverlay","closeOverlay","actionFunction","completedText","successFunction","errorLogText","errorMessageCaption","tasksActedOn","selectUser","selectExportableFields","bin","selectTaskLabelTemplate","isDownloadUrlValid","selectExportTaskCollectionTemplate","getExporTaskCollectionTemplate","urlLength","dialogItems","oc","multipleTasks","actionMsg","TaskStatusSelectorDialog","okEnabled","disabledMessage","completedStatusOption","inProgressStatusOption","toggleOkEnabled","updateCollectedDateTime","ok","TestMethodManagement","testMethodManagementService","actionId","actionOptions","fetchOrganizationTestMethods","tms","selectectedIds","organizationTestMethodId","hideOrganizationTestMethods","showOrganizationTestMethods","loadGridData","setCheckboxVisibility","setFilterModel","filterType","dataGridRowSelected","getImpersonatingOrganizations","onGridSelectionChanged","testMethodManagementGrid","LoginAudit","loginAuditService","dateRangeOptions","selectedDateRangeOption","updateLoginDataView","loginData","loginDataView","ld","fetchLoginAuditData","getLoginAuditData","LoginAuditDetail","loginAuditDetail","getLoginAuditDetail","notFound","RequestDetailMode","use","standardConfiguration","feature","registerHandler","FoundationValidationRenderer","LicenseManager","setLicenseKey","environment","debug","developmentLogging","testing","registerSingleton","originalErrorHandler","onerror","messageOrEvent","source","lineno","colno","reason","Guid","isGuid","appInsightsKey","registerKey","navigateToRoot","regeneratorRuntime","throttle","UiCapPlan","taskOperationsTiming","autoRemediationAssignedUserId","autoRemediationApprovalUserId","autoRemediationAssignedUserFullName","autoRemediationApprovalUserFullName","NewsItemDetail","getNewsItem","publishDate","newsItemId","saveNewsItem","NewsItemList","selectedActiveNewsItems","newsItemsView","setSelectedActiveNewsItems","updateNewsItemsView","deleteNewsItems","newsItemsToDelete","newsItemIds","TaskDistributionMethod","ExcelCellEditor","editTemplate","ValidationController","editorElement","getEditorElement","setInititalKeyStrokeValueToInputIfExists","datepickerElement","__valid","select2SelectElement","ee","select2Element","parseFloat","date1","date2","date1Number","date2Number","stringResources","RequestTemplateService","requestTemplates","drafts","rt","isDraft","requestTemplateId","requestTemplate","draftRequest","isValidForSubmission","requestTemplateIds","CourierService","couriers","getCouriers","courierData","GenerateTasksPointZoneDistributionMethod","mergeModules","modules","OrganizationDetail","testMethodFilterText","moduleFilterText","childrenFilterText","testMethodGridOptions","moduleGridOptions","childrenGridOptions","configurationGridOptions","hasErrors","allModulesSelected","modulesView","organizationView","configurations","childrenView","testMethodsView","allowStandardRequestSubmission","allowCompositing","allowPartialRequestSpecification","defaultLabCode","requestSubmissionEmailRecipients","partialTestResultEnabledLabs","enableBetaFeatures","enableSegmentLookupMappings","configurationsView","ALLOW_STANDARD_REQUEST_SUBMISSION","ALLOW_COMPOSITING","DEFAULT_LAB_CODE","labCode","REQUEST_SUBMISSION_EMAIL_RECIPIENTS","emailRecipients","DISABLE_TASK_RELATED_EMAILS","disableTaskRelatedEmails","ENABLE_SEGMENTATION","hasSegmentAccess","PARTIAL_TEST_RESULT_LABS","ALLOW_INTERNAL_COMPOSITING","ENABLE_WIDGET_DASHBOARD","enableWidgetDashboard","updateTestMethodView","updateModuleView","updateChildrenView","configurationValues","updateConfigurationView","labCodes","labCodeSubscription","labCodesSubscription","regex","vr","am1","am2","validationResults","updateValidationIndicators","getOrganizationForSave","willRemoveApplicationModules","showRolePermissionRemovalWarning","saveOrganizationCommand","saveOrganizationConfiguration","saveOrganization","parentId","saveApplicationModules","handleSaveError","entry","saveConfigurationValues","OrganizationList","organizationsView","Settings","organizationSettings","initializeValidationRules","getConfigurationsValues","os","setting","moduleType","organizationSettingValidationRules","saveConfigurationsValues","areValidEmails","AgPointPlanNameCellRenderer","AgPointPlanIsRemediationCellRenderer","PartialTestResultList","partialTestResultService","partialTestResultQueryFilter","getTestResults","partialTestResults","customKeyValues","loadTestResultsData","partialTestResultsGrid","currentChartRef","destroyChart","PasswordRequirements","passwordRequirementsService","passwordRequirements","canEditPasswordRequirements","getRequirements","userTopLevelOrganization","saveRequirements","ZeroToBlankValueConverter","showLoader","isLoadingCount","loaderFadedOut","overlay","autoClose","showMessageOverlay","isClosing","loaderFadeOut","OrganizationConfiguration","previousInstruction","RedirectToRoute","UiLabelTemplateElement","uiLabelTemplateElement","fontFamily","font","_objectName","_x","_y","_width","RemediationRootCauseList","canEditRemediationRootCauseList","showLoadingOverlay","sortedRowData","forEachNodeAfterFilterAndSort","createRemediationRootCauseList","hideOverlay","rowDataChanged","rowNodeDataToRemove","getModel","forEachNode","onRowDataUpdated","remediationRootCauseGrid","AdhocField","disableFilter","disableOutput","disableSort","fieldKey","queryLevelItems","queryLevelItem","fieldDataType","fieldSupportsFullTextSearch","supportsFullTextSearch","fieldCaption","fieldKeyChanged","fromView","AdhocFilter","filterField","filterFieldDataTypeChangeSubscription","handleFilterFieldDataTypeChange","AdhocReportDetail","segmentationTemplateService","adhocReportOptionsService","adhocReportService","sortDirections","noValidOutputColumns","duplicateSortFieldsPresent","canSaveAdhocReports","getAdhocReportOptions","queryLevel","filterFields","outputFields","sortFields","getAdhocReport","adhocReportOptions","segmentsEnabled","getSampleSegments","sampleSegments","allQueryLevelItems","handleQueryLevelChanged","queryLevelChangedSubscription","findField","setupSegmentNameValidation","outputField","sortField","validateExecutionOnly","atLeastOneValidField","fieldsAreUnique","getSegmentationTemplateSegments","uniqueSegments","segmentOptions","s1","s2","isLast","tearDownSegmentNameValidation","details","targetIndex","sourceIndex","targetField","getFieldProperty","saveAdhocReport","getTempAdhocReportResults","reportResults","getDownloadUrl","executionOnly","rule","AdhocReportSubscriptionCreate","adhocReportSubscriptionService","createAdhocReportSubscription","adhocReportSubscription","getCurrentUserAdhocReports","userAdhocReports","activation","adhocReportId","deliveryTimeOfDay","emailTo","emailCC","emailBCC","emailSubject","emailComment","renderFormat","AdhocReportSubscriptionDetail","subsriptionFrequencyTypes","emailRegEx","subscriptionFrequencyRule","deliveryDayType","list","AdhocReportSubscriptionEdit","changeAdhocReportSubscriptionDelivery","getAdhocReportSubscription","AdhocReportSubscriptionList","subscriptions","deleteAdhocReportSubscription","loadSubscriptions","startAdhocReportSubscription","handleStartError","stopAdhocReportSubscription","handleStopError","getAdhocReportSubscriptions","DraggableFieldContainerCustomAttribute","dragula","revertOnSpill","moves","handle","sibling","accepts","BooleanFilter","operators","operator","dateRangeOperatorTypes","DateFilter","minValue","isFixedRange","getFixedMinValue","getFixedMaxValue","NumberFilter","isSelectionFilterDataType","SelectionFilter","parameterOptionService","defaultPlaceholder","getParameterOptions","loadItems","localFilterField","fieldDataTypeChangeSubscription","handleFieldDataTypeChanged","TextFilter","reloadOperators","filterFieldSupportFullTextSearchChangeSubscription","handleFilterFieldSupportFullTextSearchChange","ReportParameter","setValidValues","nullable","validValues","defaultValues","ReportDetail","reportService","validateForSubscription","currentUserOrganizationId","reportHtml","canEditReports","defaultOrganization","selectedOrganization","getReportNotDownload","report","hasSubscription","getSubscription","sub","toEmailAddress","deliveryTimeGmtOffsetMinutes","userLocalGmtOffset","hoursOffset","deliveryTime","deliveryDateTime","preparePredefinedParameters","setReportValidationRules","setSubscriptionValidationRules","canCreateSubscriptions","selectedTestMethod","nameWithCode","nameWithCodeA","nameWithCodeB","organizationParameter","labParameter","testMethodParameter","allowBlank","selectedLabs","carbonCopyList","blindCarbonCopyList","deliveryFreqency","deliveryDayOfWeek","keyValues","parameter","getReport","getParameters","createOrUpdateSubscription","deleteSubscription","showSubscriptionForm","param","prompt","ReportList","reportsView","getReports","isAdhocReport","reports","deleteAdhocReports","RequestTemplateSelector","newTemplateName","newTemplateNameUnique","templateNameLengthTooLong","organizationRequestTemplates","templateIndex","requestTemplateSelection","selectedTemplate","existingTemplate","excludedStandardSubmissionLabExternalIds","requestTemplateService","distributionGroupService","organizationSampleTemplateService","courierService","coaReportStyleService","suspendOrgChangeProcessing","suspendRequestTemplateChangeProcessing","samplesValid","handleOrganizationIdChanged","handleRequestTemplateChanged","handleRushChanged","labChanged","sampleTypeSummaryDataGridConfig","sampleTypeSummaries","orderedSamples","betaEnableRemoveButton","betaEnableCloneButton","standardSampleInfoViewModel","distributionGroups","distributionGroupOptions","dg","distributionGroupName","defaultLab","canProcessOrganizationIdChange","updateOrganizationConfigurableItems","getDistributionGroups","getOrganizationSampleTemplates","requestDefaults","organizationSampleTemplates","generateDistributionGroupOptions","selectedDistributionGroup","isDefault","distributionGroup","orgRequestDefaults","courier","coaReportStyle","emailReports","reportingServiceEmail","sortOrganizationSampleTypes","trySetDefaultLab","betaGridEnabled","setupAndBindV2SamplesGrid","enableCompositing","enablePartialRequests","getSegmentationTemplates","oldRequestTemplateId","getRequestTemplate","selectedRequestTemplate","templateData","templateJson","sampleTempates","projectName","sampledBy","notes","purpose","rush","removeSamples","addSamples","generateSampleTypeSummaries","isLabWare","previouslyAttemptedSubmission","draft","overwriteExistingDraftRequestTemplate","promptAndSaveRequestTemplate","orderedSamplesRequest","cloneWithOrderedSamples","editModeRequestInfoViewModel","isBetaGridValid","mainValid","requestInfoValid","updateRequestTemplate","draftRequests","filteredRequestTemplates","selectedOrganizationName","draftMode","fixUpSampleCollectionDates","createRequestTemplate","summaryMap","sampleType","sampleCount","masterSampleTemplate","testMethodsDisplay","testMethodsTooltip","customerSpecificName","sampleTemplateName","Standard","organizationIdChangedSubscription","requestTemplateSubscription","rushChangedSubscription","labChangedSubscription","createMode","getCoAReportStyleOptions","getRequest","coaReportStyleOptions","courierOptions","setupOrganizations","setupLabsSelectorOptions","setupRequest","subscribeToPropertyChanges","fixSampleCollectionDates","tryPopulateLocationTestingDetails","getOrganizationDetail","organizationDetail","ensureDistributionGroupOption","setupForCreation","isThisAnEditPageLoad","requestClone","sampleSegmentationGridOptions","ensureObject","draftTemplateName","gridId","requestTemplateFilters","getRequestTemplates","transformRequestTemplatesToSelectorOptions","configureWithExistingSamples","comparison","BETA_GRID_ENABLED","thisIsASubmittedRequest","sampleSegmentationGridIsEditable","columnDefiner","addSampleTemplateCol","addCollectionDateCol","addSegmentationTemplateCol","addLookupCols","addNonLookupCols","addDescriptionCol","addLastCols","updateBetaSelectionDependentButtons","sampleSegmentationGrid","selectedGridIds","rn","clonedSegments","setSelected","currentColDefs","selectedSampleIds","selectedSegmentationTemplateIds","updatedSamples","segmentationTemplateIdsToCheck","segmentationTemplateIdsToRemove","copySelectedRangeDown","showDataGridReorderDialog","columnOrder","RequestDetailLocationTestingSampleInfo","csvContent","encodedUri","encodeURI","RequestDetailRequestInfo","newRequest","oldRequest","RequestDetailSampleInfo","agGridSuppressRangeSelection","gridRenderPendingCount","pendingRefreshRowNodes","getEditorProperties","compositeOptions","setGridOptions","sampleTypeTestTemplates","metadata","which","stopEditing","clearRangeSelection","addCellRange","rowStartIndex","rowEndIndex","columnStart","columnEnd","setFocusedCell","segmentationConfiguration","keyedSegments","defer","handleChange","tearDownSegmentValidation","setupSegmentValidation","ensureSegmentColumnDefs","refreshCells","rowNodes","force","setColumnVisible","existingSegmentColumnDefs","newSegmentColumnDefs","getSegmentColumnDefs","checkSegmentColumnDefsMatch","segmentColumDefs","createSegmentColumnDef","suppressMovable","suppressKeyboardEvent","suppressKeyEvent","enableCellChangeFlash","getSegmentationTemplateName","isNumeric","handleSegmentationTemplateIdChanged","processDataFromClipboard","rowBuffer","onPasteEnd","postSort","isLabWareChanged","ost","filteredTestTemplates","organizationSampleType","setSelectedSamples","toggleButtonsDependentOnSelections","addSampleInternal","ensureNewGridFunctionAlertShown","samplesToClone","samplesToRemove","addToCollection","setupSampleValidation","tearDownSampleValidation","enableRemoveButton","enableCloneButton","samplesGridFullHeightViewModel","scrollTo","isBefore","years","segmentRules","RequestList","templateFilterText","requestFilterText","initiallyLoaded","allRequestsSelected","canDownloadRequestPdfs","canDeleteSelectedRequests","selectedView","noLabelTemplatesMessage","selectSingleRequestMessage","templateTypeOptions","selectedTemplateType","createdDateRangeOptions","defaultCreatedDateRangeOption","selectedCreatedDateRangeOption","submittedDateRangeOptions","defaultSubmittedDateRangeOption","selectedSubmittedDateRangeOption","requestTemplateGridOptions","requestGridOptions","allTemplatesSelected","selectedActiveRequestTemplates","selectedValidRequestTemplates","selectedDrafts","selectedRequests","canDownloadUnavailablePdfs","canDeleteRequestTemplates","requestTemplateGridFullHeightViewModel","requestGridFullHeightViewModel","cloneRequestTemplate","loadRequestTemplates","setSelectedRequestTemplates","handleCloneError","requestTemplatesView","createByUserId","requestsView","pdfAvailable","setSelectedRequests","updateRequestTemplatesView","typeCaption","updateRequestsView","requests","loadRequests","createdDateFrom","createdDateTo","populateAdditionalProperties","requestDateFrom","requestDateTo","requestSubmissionStatus","pdfAvailableCaption","sampleLabelTemplates","loadSampleLabelTemplates","populateCollectionDateProperties","collectionDateCaption","getCollectionDateCaption","selectedRequestTemplateIds","createRequests","confirmationHeader","deleteRequestTemplates","requestTemplatesToDelete","getExportUrl","formatMsg","getDraftExportUrl","asDraft","selectedRequestsView","selectSampleLabelTemplate","getSampleLabelPdfUrl","multipleRequestTemplates","orgSettings","configureBetaFeaturesAvailability","enableBetaGrid","emptyExportTaskCollectionTemplateFormattingOptions","alternateRowColor","columnWidth","adjustColumnsToContents","RoleDetail","role","permissions","isGroupSelected","canEditRoles","unselectedPermission","getPermissions","orgName","mapPermissions","getRole","permission","roleId","getRoleClone","saveRole","updateIsGroupSelected","RoleList","roles","searchFilter","showPermissions","canViewRoles","getRoles","deleteRole","iLen","RoleMoveUsers","users","selectedRole","selectedUsers","getUsersInRole","fullName","bulkUpdateUsersRole","updateSelections","setSelectedUsers","running","requestAnimationFrame","AgDateTimeEditorTypes","ForgotPassword","requestIsPending","initResetPassword","Login","attemptingLogin","loadingDisclaimer","verifyAccountToken","verifyaccount","passwordExpired","login","getErrorMessage","LoginDialog","dialogController","ResetPassword","successOrPermanentFailure","passwordRequirementFailures","resetPassword","confirmPassword","requirementFailures","minPasswordLength","requireUpperCaseCount","requireNumberCount","requireSpecialCharacterCount","passwordReuseCount","UnauthenticatedApp","pipelineProvider","removeStep","SegmentationTemplateList","newSegmentNames","lookupSegmentOptions","initiallyActive","expandedView","canEditSegmentationTemplates","getImpersonatingConfiguration","getSegmentationTemplate","refreshLookupSegmentOptions","missingSegments","pair","lookupMappingError","segmentNameExists","existingNewSegmentName","sn","lookupMappingValid","validateLookupMapping","saveSegmentationTemplate","savedSegmentationTemplate","selectedSegmentationTemplateTypes","selectedActiveSegmentationTemplates","uiSegmentationTemplatesView","setSelectedActiveSegmentationTemplates","updateSegmentationTemplatesView","uiSegmentationTemplates","deleteSegmentationTemplates","segmentationTemplatesToDelete","segmentationTemplateIds","SpecificationDetail","qualitativeResultService","specificationService","specificationTypes","canViewSpecifications","canEditSpecifications","canAccessLocationTestingModule","initSpecification","canApplyRetroactively","isCreate","updateSpecificationType","conditionIsSet","specification","maxQuantitativePassCount","passingQualitativeResults","haveConditionsChanged","getQualitativeResultTypes","getSpecification","qualitativeResultTypes","existingPointRooms","organizationChanged","testMethodChanged","organizationChangeSubscription","testMethodChangeSubscription","maxQuantitativePassCountChangeSubscription","conditionPropertyChanged","minQuantitativeWarningCountChangeSubscription","passingQualitativeResultsChangeSubscription","warningQualitativeResultsChangeSubscription","combined","saveSpecification","apiErrorMessage","SpecificationList","SpecificationService","specificationFilterText","selectedSpecifications","specificationGridOptions","specificationsView","setSelectedSpecifications","getSpecifications","updateSpecificationView","specifications","deleteSpecifications","removeSpecifications","specificationsToDelete","CustomCoaDialog","contact","allFunction","ResultList","resultService","filterRequestId","filterSampleId","filterPoNumber","filterDescription","filterCustomerRequestStatus","canViewCoas","customCoaSamples","chartViewOptions","selectedChartView","groupingOptions","selectedGroupView","resultsView","mobileResultsView","donut1Data","donut2Data","donut3Data","donut4Data","donutTestData1","donutTestData2","donutTestData3","defaultColumnDefinition","columnTypes","valueFromArrayColumn","stripCompareIntegers","requestGroupGridOptions","aggFuncs","groupDisplayType","groupDefaultExpanded","groupRowRendererParams","suppressCount","padding","organizationGroupGridOptions","labGroupGridOptions","statusQueryFilters","canAddToCustomCoa","anySelected","getResults","sampleComposite","mobileResults","getCount","sc","submittedCount","receivedCount","processingCount","completedCount","tr","incompleteCount","passCount","failCount","rawResults","receivedDate","isPool","isCoaGenerated","updateRequestStatusCountCharts","updateTestResultCountCharts","getResultsUrl","getCertificateUrl","getCertificateContact","certContact","footerNotes","getCapPlanGridOptions","masterDetail","detailCellRendererParams","detailGridOptions","getDetailRowData","successCallback","emmaAttributes","AgDatePickerEditor","_datePickerInput","isCurrentUserImpersonating","isCurrentUserWorkingUnderOrganization","hasAccessBasedOnAllowedUserTypes","draftRequestTemplateIds","requestIds","SegmentationTemplateService","ResultService","TestMethodList","organizationTestMethods","organizationTestMethodsView","otm","quotedPrice","testResultsViewBySelectorOptions","TestResultsGroupByCustomElement","getLastDisplayedRow","cellRange","chartType","GroupedColumn","chartThemeName","chartThemeOverrides","common","filteredByListeria","currentDateRangeCaption","createRangeChart","drawChart","TestResultList","testResultService","suppressPageSizeReload","outcomeStatusOptions","testResultQueryFilter","countTestResults","testResultsCount","pageSizeSelectorOptions","testResults","testResultGridOptions","reloadPage","testCode","condition1","condition2","rowDataMap","filterAndSortListeriaResults","combineListeriaResults","columnKeys","getAllColumns","isPinnedRight","exportDataAsCsv","pageSizeSubscription","handlePageSizeChanged","PartialTestResultsQueryFilters","ex","milliseconds","isMoment","tIndex","generatePlanManagementColumnDefs","cellRendererSelector","detailColumnDefs","generatePlanManagementGridOptions","activeTestMethodPlans","LocalStorageConstants","UserDetail","noOrgSelectedRolesPlaceholderText","orgSelectedRolesPlaceholderText","rolesPlaceholderText","canEditUsers","canAssignRoles","permissionGroups","otherOrganizations","selectedOtherOrganizations","updateOtherOrganizations","updateOrganizationRoles","updatePermissionGroups","toggleRoleState","checkRoleIsUnderOrganization","organizationRoles","isOrgSelected","rolesEnabled","unlockUser","saveUser","getUserRecordChanges","UserList","selectedActiveUsers","canDeleteUsers","setSelectedActiveUsers","updateUsersView","loadUsers","usersMatchingOrganization","roleName","activeStatus","deleteUsers","usersToDelete","userIds","multipleUsers","AureliaCellRendererCompBase","httpCodesToHandle","UiLabelTemplate","sizeCaption","configuredForHoverCaption","formatDateTimeToLocal","agFormatDateToLocale","agFormatDateAndTimeToLocale","agFormatBoolean","agFormatTaskCollectionType","UiSegmentationTemplateSegment","uiSegmenationTemplate","uiSegmentationTemplateSegment","useOnSampleLabels","in","useOnRequestCoas","combine","PointRoomService","findAncestor","matchingClass","maxGenerations","currentElement","renderInstruction","unrender","formErrorElement","innerText","errorTooltip","previousElementSibling","nextElementSibling","dataGridRow","errorCount","dataGridCell","Specification","warningQualitativeResults","_type","minQuantitativeWarningCount","$this","applyOutcomesRetroactively","oldSpecification","spec1","spec2","UiPlanCoverage","nextWeek","getPlanCoverage","planCoverageResult","changeHandler","DashboardQueryFilters","MapListQueryFilters","mapAttributeQueryFilters","RequestDefaultsService","SampleSegmentationGridPreferences","AdhocReportOptionsService","RecordStatus","getRecordStatusOptions","PlanSummaryConverter","ps","mapSummary","SampleDescriptionBuilder","getField","getValue","organizationInternalId"],"mappings":"uiEAQO,IAAMA,EAAb,YAMI,0B,4FAAA,UACI,2BAJIC,KAAO,gBAMX,EAAKC,cAAgB,GAHzB,E,UANJ,O,kOAAA,M,EAAA,G,EAAA,+BAiBQC,KAAKD,cAAgB,KAjB7B,uCAoBkB,WACV,OAAOE,OAAOC,OAAP,MAAAD,OAAM,CACT,IADS,SAEND,KAAKD,cAAcI,KAAI,SAACC,EAAcC,GAAf,sBAAoC,EAAKP,KAAzC,YAAiDO,EAAjD,UAA6DD,EAAEE,UAFhF,EAGNN,KAAKD,cAAcI,KAAI,SAACC,EAAcC,GAAf,sBAAoC,EAAKP,KAAzC,YAAiDO,EAAjD,WAA8DD,EAAEG,eAxBtG,sCA4BoBC,GAAW,WACvB,GAAKA,EAAL,CAIA,IAAMC,EAAe,iCACfC,EAAgB,kCAChBC,EAAYV,OAAOW,QAAQJ,GAAQL,KAAI,gCACvCU,EAAaF,EAAUG,QAAO,SAAAC,GAAC,OAAIN,EAAaO,KAAKD,MACrDE,EAAcN,EAAUG,QAAO,SAAAC,GAAC,OAAIL,EAAcM,KAAKD,MAC7D,GAAIF,EAAWK,SAAWD,EAAYC,OAClC,MAAM,IAAIC,MAAM,yDAGpBN,EAAWO,SAAQ,SAACC,GAChB,IAAMC,EAAWD,EAAEE,UAAU,EAAGF,EAAEG,QAAQ,MAAQ,SAClD,EAAKzB,cAAc0B,KAAK,CACpBnB,KAAME,EAAOa,GAAId,MAAOC,EAAOc,WA7C/C,4BAaQ,OAAOtB,KAAKD,cAAcmB,Y,2BAblC,G,UAA+C,I,+SCJ1BQ,EADpBC,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,4DAGTC,GACT,OAAO9B,KAAK6B,WAAWE,IAAhB,yCAAsDD,M,kCAGrDE,GACR,OAAOhC,KAAK6B,WAAWE,IAAhB,0BAAuCC,M,sCAGlCC,GACZ,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,0BAA0CF,M,mCAGxCG,GACT,OAAKA,EAASL,GAGPhC,KAAK6B,WAAWS,IAAhB,0BAAuCD,EAASL,IAAMK,GAFlDrC,KAAK6B,WAAWU,KAAK,mBAAoBF,K,6CAKjCG,GACnB,OAAOxC,KAAK6B,WAAWY,MAAhB,mBAA0CD,Q,gTCtBzD,IAAqBE,EAArB,WACI,WAAoBb,I,4FAAsB,SAAtB,KAAAA,a,UADxB,O,EAAA,G,EAAA,2CAGwBc,GAChB,IAAIT,EAAQ,YAAiBS,GAAa,GAE1C,OAAO3C,KAAK6B,WAAWE,IAAhB,kCACwBG,EAAQ,IAAH,OAAOA,GAAU,OAP7D,6CAW2BU,GACnB,IAAIV,EAAQ,YAAiBU,GAAS,GACtC,OAAO5C,KAAK6B,WAAWE,IAAhB,gBAA6BG,MAb5C,wDAgBsCW,EAAeC,GAC7C,IAAIZ,EAAQ,YAAiB,CAAEW,QAAOC,oBAEtC,OAAO9C,KAAK6B,WAAWE,IAAhB,oCAAiDG,S,2BAnBhE,KAAqBQ,EAAc,aADlC,I,iCAEmC,OADfA,GAAA,O,uSCHAK,EADpBpB,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,6DAGRe,GACV,IAAIV,EAAQc,YAAiBJ,GAC7B,OAAO5C,KAAK6B,WAAWE,IAAhB,sCAAoDG,EAAQ,IAAH,OAAOA,GAAU,O,gDAG3De,GACtB,OAAOjD,KAAK6B,WAAWE,IAAhB,oDAAiEkB,S,wJChBhF,IAAKC,EAAL,6EAAKA,GACD,wBACA,wBACA,gDACA,kBAJJ,CAAKA,MAAgB,KAOd,IAAMC,EAA4C,CACrDC,UAAWF,EAAiBE,UAC5BC,UAAWH,EAAiBG,UAC5BC,sBAAuB,0BACvBC,OAAQL,EAAiBK,QAGvB,SAAUC,EAAmBC,GAC/B,MAA6B,4BAAtBA,EACDP,EAAiBO,GACjBP,EAAiBI,wB,yWCRNI,E,WAQjB,WACIC,EACAC,I,4FAAoB,SAEpB5D,KAAK6D,eAAiBF,EACtB3D,KAAK8D,cAAe,EACpB9D,KAAK+D,iBAAkB,EACvB/D,KAAKgE,uBAAyB,GAC9BhE,KAAKiE,YAAcL,EACnB5D,KAAKkE,uBAAyBlE,KAAK6D,e,mEA8CnC7D,KAAK8D,aAAe9D,KAAK6D,eAAeM,OAAM,SAAA9D,GAAC,OAAIA,EAAE+D,cACrDpE,KAAKgE,uBAAyBhE,KAAK6D,eAC9B/C,QAAO,SAACuD,GAAD,OAAgCA,EAAID,YAAcC,EAAIC,YAClEtE,KAAK+D,gBAAkB/D,KAAKgE,uBAAuB9C,QAC/ClB,KAAKgE,uBAAuBG,OAAM,SAAA9D,GAAC,OAAIA,EAAEiE,c,0CAG7BC,GAAkB,WAClC,GAAKA,GAAoC,IAAtBA,EAAWrD,QAA4C,IAA5BlB,KAAKiE,YAAY/C,OAA/D,CAKA,IAAMsD,EAAgBxE,KAAK6D,eAAe/C,QAAO,SAACT,GAC9C,OAAOJ,OAAOwE,KAAKpE,GAAGqE,QAAO,SAACC,EAAKC,GAC/B,GAAI,EAAKX,YAAYY,SAASD,GAC1B,OAAOD,GAAOtE,EAAEuE,GAAME,cAAcD,SAASN,EAAWO,qBAKpE9E,KAAKkE,uBAAyBM,OAZ1BxE,KAAKkE,uBAAyBlE,KAAK6D,iB,kCAlDvC,OAAO7D,KAAK8D,c,aAGOiB,GACnB/E,KAAK8D,aAAeiB,EAChB/E,KAAK8D,cACL9D,KAAK6D,eAAezC,SAAQ,SAACiD,GAAD,OAAgCA,EAAID,YAAa,KAC7EpE,KAAKgE,uBAAyBhE,KAAK6D,iBAGnC7D,KAAK6D,eAAezC,SAAQ,SAACiD,GAAD,OAAgCA,EAAID,YAAa,KAC7EpE,KAAKgE,uBAAyB,IAGlChE,KAAK+D,gBAAkB/D,KAAKgE,uBAAuB9C,QAC/ClB,KAAKgE,uBAAuBG,OAAM,SAAA9D,GAAC,OAAIA,EAAEiE,c,qCAK7C,OAAOtE,KAAK+D,kB,4CAIZ,OAAO/D,KAAKkE,yB,oCAIZ,OAAOlE,KAAK6D,gB,aAGSmB,GACrBhF,KAAK6D,eAAiBmB,EACtBhF,KAAKkE,uBAAyBlE,KAAK6D,iB,4CAInC,OAAO7D,KAAKgE,4B,gCAtChB,aADC,YAAa,gB,yGAGb,MAkBD,aADC,YAAa,mB,oGAGb,O,ygBChDgBiB,EADpBtD,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,6FAGJqD,EAAMC,EAAOC,G,oGAI3B,IAHIC,EAAW,GACXC,EAAW,IAAIC,S,4BAEnB,EAAiBJ,EAAjB,+CAASK,EAAe,QACpBF,EAASG,OAAO,QAASD,GACzBH,EAAS5D,KAAT,UAAiByD,EAAjB,YAAyBM,EAAKlF,O,wPAG5BN,KACD6B,WACA6D,cAAcR,GACdS,QACAC,YAAYN,GACZO,qBAAqBT,GACrBU,O,iCAEET,G,woBCff,IAAqBU,EAArB,WACI,WAAoBlE,EAAgCmE,I,4FAAc,SAA9C,KAAAnE,aAAgC,KAAAmE,SAChDhG,KAAK6B,WAAaA,EAClB7B,KAAKgG,OAASA,E,UAHtB,O,EAAA,G,EAAA,mCAMgBC,GACR,IAAM/D,EAAQ,YAAiB+D,GAAgB,GAE/C,OAAOjG,KAAK6B,WAAWE,IAAhB,oCAC0BG,EAAQ,IAAH,OAAOA,GAAU,OAV/D,iCAcegE,EAAkBlE,GACzB,OAAOhC,KAAK6B,WAAWE,IAAhB,iBACOmE,EADP,uCAC8ClE,MAhB7D,uCAqBQ,OAAOhC,KAAK6B,WAAWE,IAAI,iDArBnC,yCA2BQmE,EACAC,EACAC,GAEA,IAAMC,EAAc,YAAiB,CAAEC,aAAcH,IAAiB,GAEtE,OAAOnG,KAAK6B,WAAWE,IAAhB,iBACOmE,EADP,uCAC8CE,EAD9C,mBAECC,EAAYnF,OAAS,IAAMmF,EAAc,OAnCzD,yCAwCuBpE,GACf,OAAOjC,KAAK6B,WAAWU,KAAK,yCAA0C,CAAEN,UAzChF,oCA4CkBiE,EAAkBK,GAC5B,OAAOvG,KAAK6B,WAAWU,KAAhB,iBACO2D,EADP,+BAEHK,KA/CZ,oCAmDkBL,EAAkBK,GAC5B,OAAOvG,KAAK6B,WAAWS,IAAhB,iBACO4D,EADP,uCAC8CK,EAAQvE,IACzDuE,KAtDZ,8CA0D4BL,EAAkBlE,GACtC,OAAOhC,KAAK6B,WAAWE,IAAhB,iBACOmE,EADP,uCAC8ClE,EAD9C,yB,2BA3Df,KAAqB+D,EAAc,aADlC,I,iCAEmC,IAAkC,mBAAxB,OAAwB,IAAN,UAAM,YADjDA,GAAA,O,ywBCKrB,IAAqBS,EAArB,WAqBI,WACYC,I,4FAA0B,SAA1B,KAAAA,eAERzG,KAAK0G,YAAc,GACnB1G,KAAK2G,YAAc,GACnB3G,KAAK4G,cAAgB,GACrB5G,KAAK6G,aAAe,GACpB7G,KAAK8G,YAAc,GACnB9G,KAAK+G,YAAc,GAEnB/G,KAAKgH,qBAAuB,GAE5BhH,KAAKiH,Q,UAjCb,O,EAAA,G,EAAA,+BAqCQjH,KAAKM,KAAO,GACZN,KAAKkH,YAAc,GAEnBlH,KAAKmH,cAAgB,GACrBnH,KAAKoH,cAAgB,GACrBpH,KAAKqH,qBAAuB,GAC5BrH,KAAKsH,qBAAuB,GAC5BtH,KAAKuH,cAAgB,GACrBvH,KAAKwH,cAAgB,GACrBxH,KAAKyH,mBAAqB,GAE1BzH,KAAK0H,YAAc,IAhD3B,yCAmDuBC,GAAuD,I,EAAA,OAAtCC,EAAsC,uDAAF,GACpE5H,KAAK0G,YAAcmB,MAAMC,KAAK,IAAIC,KAAwC,QAApC,EAACJ,aAAM,EAANA,EAAQ7G,QAAO,SAAAC,GAAC,OAAe,OAAXA,EAAEiH,eAAa,QAAK,IAC1E7H,KAAI,SAAAY,GAAC,OAAIA,EAAEiH,SAAOC,UAClB9H,KAAI,SAAA+H,GAAC,MAAK,CAAEC,MAAOD,EAAG3H,MAAO2H,MAClClI,KAAK2G,YAAckB,MAAMC,KAAK,IAAIC,KAAKJ,UAAU,IAAIxH,KAAI,SAAAY,GAAC,OAAIA,EAAEqH,SAAOH,UAAU9H,KAAI,SAAA+H,GAAC,MAAK,CAAEC,MAAOD,EAAEG,WAAY9H,MAAO2H,MACzHlI,KAAK4G,cAAgB,CAAC,CAAEuB,MAAO,MAAO5H,OAAO,GAAQ,CAAE4H,MAAO,KAAM5H,OAAO,IAC3EP,KAAK6G,aAAe,CAAC,CAAEsB,MAAO,MAAO5H,OAAO,GAAQ,CAAE4H,MAAO,KAAM5H,OAAO,IAC1EP,KAAK8G,YAAce,MAAMC,KAAK,IAAIC,KAAKJ,UAAU,IAAI7G,QAAO,SAAAC,GAAC,QAAMA,EAAEuH,QAAMnI,KAAI,SAAAY,GAAC,OAAIA,EAAEuH,SAAOL,UAAU9H,KAAI,SAAA+H,GAAC,MAAK,CAAEC,MAAOD,EAAG3H,MAAO2H,MACpIlI,KAAK+G,YAAcc,MAAMC,KAAK,IAAIC,KAAKJ,UAAU,IAAIxH,KAAI,SAAAY,GAAC,OAAIA,EAAEwH,SAAON,UAAU9H,KAAI,SAAA+H,GAAC,MAAK,CAAEC,MAAO,EAAK1B,aAAa+B,eAAeN,GAAI3H,MAAO2H,MAGhJ,IAAIO,EAA0B,IAAIC,IAClCd,EAAgBxG,SAAQ,SAAAhB,GACpB,GAAIqI,EAAwBE,IAAIvI,EAAEE,MAAO,CACrC,IAAIsI,EAAQH,EAAwB1G,IAAI3B,EAAEE,MACrCsI,EAAMC,MAAK,SAAAC,GAAC,OAAIA,IAAM1I,EAAEG,UACzBqI,EAAMnH,KAAKrB,EAAEG,YAEjBkI,EAAwBM,IAAI3I,EAAEE,KAAM,CAACF,EAAEG,WAI/C,IAAIyI,EAAsBpB,EAAgBlD,QAAO,SAACuE,EAAYC,GAI1D,OAHKD,EAAWJ,MAAK,SAAAzI,GAAC,OAAIA,EAAEE,KAAKwE,gBAAkBoE,EAAU5I,KAAKwE,kBAC9DmE,EAAWxH,KAAK,CAAEnB,KAAM4I,EAAU5I,KAAMC,MAAO2I,EAAU5I,OAEtD2I,IACR,IAGHjJ,KAAKgH,qBAAuBgC,EAAoB7I,KAAI,SAAAC,GAAC,MAAK,CAAE+H,MAAO/H,EAAEE,KAAMC,MAAOH,EAAEG,UACpFP,KAAKgH,qBAAqB5F,SAAQ,SAAA+H,G,MAC1BC,EAAyE,QAAtD,EAAAX,EAAwB1G,IAAIoH,EAAoB5I,cAAM,QAAI,GAE5D4I,EACNE,aAAeD,EAAgBjJ,KAAI,SAAA+H,GAAC,MAAK,CAAEC,MAAOD,EAAG3H,MAAO2H,WAtFvF,mCA2FiBP,EAAiB2B,GAAgC,I,4BAAA,OAC1D,OAAK3B,GAIL3H,KAAK0H,cACU,QAAV,EAAC1H,KAAKM,YAAI,QAAI,IAAIY,OAAS,EAAI,EAAI,KAClB,QAAjB,EAAClB,KAAKkH,mBAAW,QAAI,IAAIhG,OAAS,EAAI,EAAI,KACf,QAA3B,EAAmB,QAAnB,EAAClB,KAAKmH,qBAAa,eAAEjG,cAAM,QAAI,GAAK,EAAK,EAAI,KAClB,QAA3B,EAAmB,QAAnB,EAAClB,KAAKoH,qBAAa,eAAElG,cAAM,QAAI,GAAK,EAAK,EAAI,KACX,QAAlC,EAA0B,QAA1B,EAAClB,KAAKqH,4BAAoB,eAAEnG,cAAM,QAAI,GAAK,EAAI,EAAI,KACjB,QAAlC,EAA0B,QAA1B,EAAClB,KAAKsH,4BAAoB,eAAEpG,cAAM,QAAI,GAAK,EAAI,EAAI,KACxB,QAA3B,EAAmB,QAAnB,EAAClB,KAAKuH,qBAAa,eAAErG,cAAM,QAAI,GAAK,EAAK,EAAI,KAClB,QAA3B,EAAmB,QAAnB,EAAClB,KAAKwH,qBAAa,eAAEtG,cAAM,QAAI,GAAK,EAAK,EAAI,IAC7CoI,EAA0B,EAAI,GAE5B3B,EAAO7G,QAAO,SAAAC,G,kCACjB,OAAmE,IAAnEA,EAAET,KAAKwE,cAActD,SAAkB,QAAV,EAAC,EAAKlB,YAAI,QAAI,IAAIwE,iBAC0C,KAA3E,QAAd,EAAC/D,EAAEmG,mBAAW,QAAI,IAAIpC,cAActD,SAAyB,QAAjB,EAAC,EAAK0F,mBAAW,QAAI,IAAIpC,iBAC9B,KAAX,QAA3B,EAAmB,QAAnB,EAAC,EAAKqC,qBAAa,eAAEjG,cAAM,QAAI,IAAY,EAAKiG,cAAc0B,MAAK,SAAAX,GAAI,MAAC,OAAAA,EAAEpD,iBAAyB,QAAP,EAAC/D,EAAEiH,YAAI,QAAI,IAAIlD,oBACrE,KAAX,QAA3B,EAAmB,QAAnB,EAAC,EAAKsC,qBAAa,eAAElG,cAAM,QAAI,IAAY,EAAKkG,cAAcyB,MAAK,SAAAX,GAAC,OAAIA,IAAMnH,EAAEqH,WACnC,KAAX,QAAlC,EAA0B,QAA1B,EAAC,EAAKf,4BAAoB,eAAEnG,cAAM,QAAI,IAAY,EAAKmG,qBAAqBwB,MAAK,SAAAX,GAAC,OAAIA,IAAMnH,EAAEwI,aACjD,KAAX,QAAlC,EAA0B,QAA1B,EAAC,EAAKjC,4BAAoB,eAAEpG,cAAM,QAAI,IAAY,EAAKoG,qBAAqBuB,MAAK,SAAAX,GAAC,OAAIA,IAAMnH,EAAEyI,iCACxD,KAAX,QAA3B,EAAmB,QAAnB,EAAC,EAAKjC,qBAAa,eAAErG,cAAM,QAAI,IAAY,EAAKqG,cAAcsB,MAAK,SAAAX,GAAI,MAAC,OAAAA,EAAEpD,iBAAyB,QAAP,EAAC/D,EAAEuH,YAAI,QAAI,IAAIxD,oBACrE,KAAX,QAA3B,EAAmB,QAAnB,EAAC,EAAK0C,qBAAa,eAAEtG,cAAM,QAAI,IAAY,EAAKsG,cAAcqB,MAAK,SAAAX,GAAC,OAAIA,IAAMnH,EAAEwH,aAtB1E,KA7FnB,uDAuHqCkB,GAC7B,IAAIC,EAAqB1J,KAAKgH,qBAAqBlG,QAAO,SAAA6I,GAAC,OAAIA,EAAEpJ,QAAUkJ,KAC3E,OAAIC,EAAmBxI,OAAS,EACZwI,EAAmB,GAClBL,aAGd,KA9Hf,yEAkIQ,IAAI5B,EAAqBzH,KAAKyH,mBAAmB3G,QAAO,SAAA8I,GAAoB,MAAC,OAAsB,QAAtB,EAAAA,EAAkBtJ,YAAI,eAAEY,QAAS,KAC9GuG,EAAqBA,EAAmB3G,QAAO,SAAA8I,GAAoB,MAAC,OAAgC,QAAhC,EAAAA,EAAkBC,sBAAc,eAAE3I,QAAS,KAE/G,IAAI0G,EAAkB,GAOtB,OANAH,EAAmBrG,SAAQ,SAAAwI,GACvBA,EAAkBC,eAAezI,SAAQ,SAAA0I,GACrClC,EAAgBnG,KAAK,CAACnB,KAAMsJ,EAAkBtJ,KAAMC,MAAOuJ,UAI5DlC,IA5If,gDAiJQ,IAAImC,EAAsB/J,KAAKyH,mBAAmBtH,KAAI,SAAAC,GAAC,OAAIA,EAAEE,QACzD0G,EAAuBhH,KAAKgH,qBAChCA,EAAqB5F,SAAQ,SAAAuI,GACzBA,EAAEK,SAAWD,EAAoBlF,SAAW8E,EAAEpJ,UAIlD,IAAI0J,EAAiB,CACjBjI,GAAI,OAAKkI,SACTC,YAAanD,EACbqC,aAAc,KACdQ,eAAgB,MAGpB7J,KAAKyH,mBAAmBhG,KAAKwI,KA/JrC,+CAkK6Bf,EAA2BO,GAChDP,EAAU5I,KAAOmJ,EAGSzJ,KAAKyH,mBAAmBtH,KAAI,SAAAC,GAAC,OAAIA,EAAEE,QACzCmB,KAAKgI,GAEzB,IAAIW,EAAuBlB,EAC3BkB,EAAqBP,eAAiB,KACtCO,EAAqBf,aAAerJ,KAAKqK,iCAAiCD,EAAqB9J,MAGhEN,KAAKyH,mBAAkE3G,QAAO,SAAAV,GAAC,OAAIA,EAAE4B,KAAOoI,EAAqBpI,MACxHZ,SAAQ,SAAAwI,GAC5B,IAEIU,EAF4BV,EAAkBO,YAEXI,MAAK,SAAAZ,GAAC,OAAKA,EAAEpJ,QAAqBkJ,KACrEa,IACAA,EAAON,UAAW,QApLlC,uDAwLqCQ,GAC7B,IAGIf,EAHuBzJ,KAAKyH,mBAAmB+C,GAGVlK,KAEXN,KAAKyH,mBACXrG,SAAQ,SAAAwI,GAC5B,IACIU,EADuBV,EAAkBO,YACXI,MAAK,SAAAZ,GAAC,OAAKA,EAAEpJ,QAAqBkJ,KAChEa,IACAA,EAAON,UAAW,MAG1BhK,KAAKyH,mBAAmBgD,OAAOD,EAAO,Q,2BAtM9C,KAAqBhE,EAAmB,aAFvC,cACA,I,iCAuB6B,OAtBTA,GAAA,O,4QChBAkE,E,WAOjB,WAAYpK,I,4FAAY,SACpBN,KAAKM,KAAOA,E,2DAQZ,MAAO,CACH,CAAE6H,MAAO,OAAQ5H,MAAOmK,EAAYC,KAAKrK,MACzC,CAAE6H,MAAO,YAAa5H,MAAOmK,EAAYE,UAAUtK,W,oCANvD,OAAON,KAAKM,U,gCAXT,EAAAuK,QAAU,IAAIH,EAAY,WAC1B,EAAAC,KAAO,IAAID,EAAY,QACvB,EAAAE,UAAY,IAAIF,EAAY,c,sVCMvC,IAAqBI,EAArB,WACI,WAAoBjJ,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAK6B,WAAaA,E,UAF1B,O,EAAA,G,EAAA,gCAKagB,GACL,IAAIkI,EAAkB,CAClBlI,MAAOA,GAGPX,EAAQ,YAAiB6I,GAAiB,GAE9C,OAAO/K,KAAK6B,WAAWE,IAAhB,gCAA6CG,EAAQ,IAAH,OAAOA,GAAU,OAZlF,2CAeyBe,GACjB,OAAOjD,KAAK6B,WAAWE,IAAhB,8CACoCkB,MAjBnD,sCAqBoB+H,EAASC,GACrB,OAAOjL,KAAK6B,WAAWE,IAAhB,yCAAsDiJ,EAAtD,iBAAsEC,MAtBrF,qCA0BQ,IAAIC,EAAY,CACZ,CAAElJ,GAAI,IAASmJ,cAAeC,MAAO,iBACrC,CAAEpJ,GAAI,IAASqJ,UAAWD,MAAO,aACjC,CAAEpJ,GAAI,IAASsJ,oBAAqBF,MAAO,uBAC3C,CAAEpJ,GAAI,IAASuJ,MAAOH,MAAO,UAEjC,OAAOI,EAAQC,QAAQP,KAhC/B,8BAmCYlJ,GACJ,OAAOhC,KAAK6B,WAAWE,IAAhB,iCAA8CC,MApC7D,kCAuCgBC,GACR,IAAIC,EAAQD,EAAI9B,KAAI,SAAC6B,GAAD,mBAAcA,MAAMG,KAAK,KAC7C,OAAOnC,KAAK6B,WAAWO,OAAhB,iCAAiDF,MAzChE,+BA4CawJ,GACL,OAAKA,EAAK1J,GAEHhC,KAAK6B,WAAWS,IAAhB,iCAA8CoJ,EAAK1J,IAAM0J,GAF3C1L,KAAK6B,WAAWU,KAAK,yBAA0BmJ,KA7C5E,2CAkDyB1J,GACjB,OAAOhC,KAAK6B,WAAWE,IAAhB,iCAA8CC,EAA9C,sBAnDf,qCAsDmB2J,GACX,IAAIZ,EAAkB,CAClBY,OAAQA,GAGRzJ,EAAQ,YAAiB6I,GAAiB,GAE9C,OAAO/K,KAAK6B,WAAWE,IAAhB,iDACuCG,EAAQ,IAAH,OAAOA,GAAU,OA9D5E,sCAmEQF,EACA4J,EACAC,GAEA,IAAMrL,EAAS,CACXoL,0BACAC,yBAEE3J,EAAQ,YAAiB1B,GAE/B,OAAOR,KAAK6B,WAAWE,IAAhB,iCACuBC,EADvB,qBACsCE,MA9ErD,+CAkFQF,EACA8J,EACAF,EACAC,GAEA,IAAME,EAAc,CAChBD,eACAF,0BACAC,wBACAG,OAAQ,OAEN3F,EAAc,YAAiB0F,GAAa,GAElD,2CAAqC/J,EAArC,0BAAyDqE,Q,2BA/FjE,KAAqByE,EAAW,aAD/B,I,iCAEmC,OADfA,GAAA,Q,0DCTrB,IAAYmB,EAAZ,2CAAYA,GACR,sBACA,sBAFJ,CAAYA,MAAmB,M,oCCA/B,4IAAMC,EACI,OADJA,EAEU,MAFVA,EAGU,MAHVA,EAIe,KAJfA,EAKS,aALTA,EAMoB,yBANpBA,EAOY,iBAPZA,EAQQ,YARRA,EASc,kBATdA,EAUc,mBAVdA,EAWQ,WAGRC,EAA0B,CAC5B,CAAEhE,MAAO+D,EAA6B3L,MAAO2L,GAC7C,CAAE/D,MAAO+D,EAAmC3L,MAAO2L,GACnD,CAAE/D,MAAO+D,EAAmC3L,MAAO2L,GACnD,CACI/D,MAAO+D,EACP3L,MAAO2L,IAITE,EAA2B,CAC7B,CAAEjE,MAAO+D,EAAkC3L,MAAO2L,GAClD,CACI/D,MAAO+D,EACP3L,MAAO2L,GAEX,CAAE/D,MAAO+D,EAAqC3L,MAAO2L,GACrD,CAAE/D,MAAO+D,EAAiC3L,MAAO2L,GACjD,CAAE/D,MAAO+D,EAAuC3L,MAAO2L,GACvD,CAAE/D,MAAO+D,EAAuC3L,MAAO2L,GACvD,CAAE/D,MAAO+D,EAAiC3L,MAAO2L,IAG/CG,EAA4B,CAC9BH,EACAA,EACAA,EACAA,GAGEI,EAA6B,CAC/BJ,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,I,qSC/CiBK,EADpB5K,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,iEAGJ2K,EAASC,GACvB,IAAIC,EAAK,GAMT,OALKF,IACDE,EAAK,WAAH,OAAcC,mBAAmB,IAAIC,KAAKJ,GAASK,iBACpDJ,IACDC,EAAK,GAAH,OAAMA,GAAN,OAAcA,EAAK,IAAM,GAAzB,mBAAuCC,mBAAmB,IAAIC,KAAKH,GAASI,iBAE3E7M,KAAK6B,WAAWE,IAAhB,qBAAqC2K,EAAK,IAAM,IAAhD,OAAsDA,M,0CAG7CI,GAChB,OAAO9M,KAAK6B,WAAWE,IAAhB,oCAAiD+K,S,oSCfhE,IAAqBC,EAArB,WAGI,WAAoBlL,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAKgN,UAAY,2C,UAJzB,O,EAAA,G,EAAA,qDAQQ,OAAOhN,KAAK6B,WAAWE,IAAI/B,KAAKgN,aARxC,qDAWmCC,GAC3B,OAAOjN,KAAK6B,WAAWS,IAAItC,KAAKgN,UAAWC,Q,2BAZnD,KAAqBF,EAA2B,aAD/C,I,iCAImC,OAHfA,GAAA,O,gjCCArB,IAAaG,EAAb,WACI,WACYC,EACAC,I,4FAAc,SADd,KAAAD,kBACA,KAAAC,S,YAHhB,S,EAAA,G,EAAA,6B,EAAA,oCAMwBC,GANxB,qHAOaA,EAAMnM,OAPnB,qDAWYmM,EAAMxE,MAAK,SAACyE,GAAD,MAAoB,cAAbA,EAAEC,UAXhC,gCAYkBvN,KAAKmN,gBAAgBK,UACvB,+BACA,qLAdhB,4CAmBYH,EAAMxE,MAAK,SAACyE,GAAD,OAAOA,EAAEG,YAnBhC,iCAoBkBzN,KAAKmN,gBAAgBK,UACvB,iCACA,6JAtBhB,+CA2BcE,EA3Bd,EA2BoC,IAAI3F,IAAIsF,EAAMlN,KAAI,SAACmN,GAAD,OAAOA,EAAErK,qBACnC/B,OAAS,GA5BrC,kCA6BkBlB,KAAKmN,gBAAgBK,UACvB,oCACA,mIA/BhB,0CAoCcG,EAAkB,IAAI5F,IApCpC,+BAqC2BsF,EArC3B,mEAsCY,IADOO,EArCnB,qCAsCY,GAAyC,QAApB,EAAIA,EAAKC,mBAAW,QAAI,IAA7C,+CAAWC,EAAsC,QAC7CH,EAAgBI,IAAID,EAAWE,gBAvC/C,sfA0CYL,EAAgBM,KAAO,GA1CnC,kCA2CkBjO,KAAKmN,gBAAgBK,UACvB,uCACA,0GA7ChB,0CAkDQxN,KAAKoN,OAAOc,gBAAgB,kCAAmC,CAC3DlM,GAAI,SACJmM,QAASd,EAAMlN,KAAI,SAACmN,GAAD,OAAOA,EAAEtL,MAC5BiB,eAAgByK,EAAgB,KArD5C,wG,wKAAA,iD,2BAAA,KAAaR,EAA4B,aADxC,I,iCAG+C,mB,OAAA,IAAf,UAAe,SACxB,OAHXA,K,0NCFPkB,EAA2B,SAC7BN,EACAO,EACAC,GAEA,OAAOD,GAAuBC,EAAvB,UACER,EAAWS,SADb,cAC2BT,EAAWxN,KADtC,cACgDwN,EAAWU,YAD3D,UAEEV,EAAWS,SAFb,cAE2BT,EAAWxN,OAG3CmO,EAAqC,SACvCX,EACAO,EACAC,GAEA,OAAOD,GAAuBC,EAAvB,UACER,EAAWS,SADb,cAC2BT,EAAWY,eADtC,cAC0DZ,EAAWU,YADrE,UAEEV,EAAWS,SAFb,cAE2BT,EAAWY,iBAK3CC,EAA0C,SAC5CC,EACAP,EACAC,GAEA,OAAOD,GAAuBC,EAAvB,UACEM,EAAqBL,SADvB,cACqCK,EAAqBtO,KAD1D,cACoEsO,EAAqBJ,YADzF,UAEEI,EAAqBL,SAFvB,cAEqCK,EAAqBtO,OAG/DuO,EAA2B,SAC7BR,EACAC,GAEA,SAAOD,IAAuBC,K,20BC9BlC,IACMQ,E,YACF,oB,4FAAA,+BAFa,yE,kPACmB,KA6B9BC,EAA+B,CACjCC,WAxBsC,CACtC,CAAEC,WAAY,YAAaC,MAAO,YAClC,CAAED,WAAY,cAAeC,MAAO,yBACpC,CACID,WAAY,YACZC,MAAO,iBACPC,MAAO,IACPC,eAAgB,KAEpB,CAAEH,WAAY,OAAQC,MAAO,QAC7B,CACID,WAAY,QACZC,MAAO,YACPG,aAAcP,GAElB,CACIG,WAAY,SACZC,MAAO,WACPE,eAAgB,KAEpB,CAAEH,WAAY,OAAQC,MAAO,SAK7BI,cAAe,CACXC,WAAY,IAAeC,2BAE/BC,qBAAqB,GAGnBC,EAAgD,IAAsBxF,OAAO6E,GAC9EY,cACAC,iBACAC,gBAAgB,iCAChBC,S,oCC7CL,kCAAO,IAAMC,EAAiD,iBAAkD,CAC5G/N,GAAI,EACJiB,eAAgB,EAChB+M,aAAc,M,wRCLGC,E,WASjB,WACIjO,EACAkO,EACA5L,EACA6L,GACA,G,4FAD6B,SACY,IAAtCD,EAA2BhP,OAC1B,MAAM,IAAIC,MAAM,qGAEpB,GAA4B,IAAzBgP,EAAcjP,OACb,MAAM,IAAIC,MAAM,wFAEpBnB,KAAKoQ,IAAMpO,EACXhC,KAAKqQ,4BAA8BH,EACnClQ,KAAKsQ,UAAYhM,EACjBtE,KAAKuQ,eAAiBJ,E,kDAItB,OAAOnQ,KAAKoQ,M,kCAGM,WAKlB,OAFApQ,KAAKwQ,aAFQ,SAACC,GAAD,IAAMC,EAAN,uDAAU,KAAV,OACTD,EAAI/L,QAAO,SAACC,EAAKgM,EAAMtQ,GAAZ,gBAAqBsE,GAArB,OAA2BtE,EAAIqQ,EAAK,IAApC,OAAyC,EAAKH,eAAehG,MAAK,SAAAZ,GAAC,OAAIA,EAAE3H,KAAO2O,EAAK1N,kBAAgB3C,KAArG,aAA8GqQ,EAAKX,aAAnH,OAAoI,IAC/H7N,CAAKnC,KAAKqQ,6BAEvBrQ,KAAKwQ,e,+BAIZ,OAAOxQ,KAAKsQ,W,aAGIhM,GAChBtE,KAAKsQ,UAAYhM,O,kvDCxClB,IAAMsM,EAAb,YAKI,aAAiD,MAArCC,EAAqC,uDAAF,GAAE,kBAC7C,2BACKC,wBAA0BD,EAC/B,EAAKnD,gBAAL,EAA2BmD,GAHkB,E,UALrD,O,kOAAA,M,EAAA,G,EAAA,+BAYQ7Q,KAAK0N,gBAAL,EAA2B1N,KAAK8Q,2BAZxC,uCAoBQ,MAAO,CACHpD,gBAAiB1N,KAAK0N,mBArBlC,0CA0BQ1N,KAAK0N,gBAAkB,KA1B/B,sCA6BoBlN,G,MACZR,KAAK+Q,oBAEL,0DAA6B,CACzBrD,gBAAuC,QAAxB,EAAElN,EAAOkN,uBAAe,eAAEvN,IAAI6Q,SAC9ChR,QAlCX,4B,MAgBQ,OAAQgR,UAA6B,QAArB,EAAChR,KAAK0N,uBAAe,eAAExM,c,2BAhB/C,G,UAA+C,I,oCCPhC,KACX,CAAEiH,MAAO,gBAAiB5H,MAAO,gBACjC,CAAE4H,MAAO,iBAAkB5H,MAAO,iBAClC,CAAE4H,MAAO,oBAAqB5H,MAAO,oBACrC,CAAE4H,MAAO,kBAAmB5H,MAAO,oB,mkECiDhC,IAAM0Q,EAAb,YAmBI,0B,4FAAA,UACI,2BAEKC,sBAAwB,IAAI,IACjC,EAAKC,oBAAsB,IAAI,IAC/B,EAAKC,yBAA2B,IAAI,IACpC,EAAKC,uBAAyB,IAAI,IAClC,EAAKC,4BAA8B,IAAI,IACvC,EAAKC,6BAA+B,IAAI,IAExC,EAAKC,kBAAmB,EACxB,EAAKC,YAAc,GACnB,EAAKC,UAAY,KACjB,EAAKC,WAAa,GAClB,EAAKC,WAAa,GAClB,EAAKC,WAAa,GAClB,EAAKC,WAAa,GAClB,EAAKC,cAAgB,GACrB,EAAK5L,cAAgB,GAlBzB,E,UAnBJ,O,kOAAA,M,EAAA,G,EAAA,+BAiEQnG,KAAKkR,sBAAsBjK,QAC3BjH,KAAKmR,oBAAoBlK,QACzBjH,KAAKoR,yBAAyBnK,QAC9BjH,KAAKqR,uBAAuBpK,QAC5BjH,KAAKsR,4BAA4BrK,QACjCjH,KAAKuR,6BAA6BtK,QAElCjH,KAAKwR,kBAAmB,EACxBxR,KAAKyR,YAAc,GACnBzR,KAAK2R,WAAa,GAClB3R,KAAK4R,WAAa,GAClB5R,KAAK6R,WAAa,GAClB7R,KAAK8R,WAAa,GAClB9R,KAAK+R,cAAgB,GACrB/R,KAAKmG,cAAgB,KA/E7B,uCAmFQ,YACOnG,KAAKkR,sBAAsBc,iBADlC,GAEOhS,KAAKmR,oBAAoBa,iBAFhC,GAGOhS,KAAKoR,yBAAyBY,iBAHrC,GAIOhS,KAAKqR,uBAAuBW,iBAJnC,GAKOhS,KAAKsR,4BAA4BU,iBALxC,GAMOhS,KAAKuR,6BAA6BS,iBANzC,CAOI7L,cAAenG,KAAKmG,cACpBuL,UAAW1R,KAAK0R,UAChBE,WAAY5R,KAAK4R,WACjBE,WAAY9R,KAAK8R,WACjBD,WAAY7R,KAAK6R,WACjBF,WAAY3R,KAAK2R,WACjBI,cAAe/R,KAAK+R,cACpBN,YAAazR,KAAKyR,YAClBD,iBAAkBxR,KAAKwR,qBAlGnC,sCAsGoBhR,GACZ,IAAMyR,EAAiC,CACnCC,kBAAmB1R,EAAO0R,kBAC1BC,gBAAiB3R,EAAO2R,gBACxBC,gBAAiB5R,EAAO4R,gBACxBC,cAAe7R,EAAO6R,cACtBC,iBAAkB9R,EAAO8R,kBAEvBC,EAA6B,CAC/B1P,MAAOrC,EAAOqC,MACd2P,OAAQhS,EAAOgS,OACf7G,OAAQnL,EAAOmL,OACf8G,QAASjS,EAAOiS,SAEdC,EAAuC,CAAEC,aAAcnS,EAAOmS,cAC9DC,EAAmC,CAAEC,WAAYrS,EAAOqS,YACxDC,EAA2C,CAC7CC,gBAAiBvS,EAAOuS,iBAEtBC,EAA+C,CACjDC,kBAAmBzS,EAAOyS,mBApBG,OAgCxBzS,GATLgR,EAvB6B,EAuB7BA,iBACAC,EAxB6B,EAwB7BA,YACAC,EAzB6B,EAyB7BA,UACAC,EA1B6B,EA0B7BA,WACAC,EA3B6B,EA2B7BA,WACAC,EA5B6B,EA4B7BA,WACAC,EA7B6B,EA6B7BA,WACAC,EA9B6B,EA8B7BA,cACA5L,EA/B6B,EA+B7BA,cAGJnG,KAAKkR,sBAAsBgC,gBAAgBjB,GAC3CjS,KAAKmR,oBAAoB+B,gBAAgBX,GACzCvS,KAAKoR,yBAAyB8B,gBAAgBR,GAC9C1S,KAAKqR,uBAAuB6B,gBAAgBN,GAC5C5S,KAAKsR,4BAA4B4B,gBAAgBJ,GACjD9S,KAAKuR,6BAA6B2B,gBAAgBF,GAElD,0DACI,CACIxB,mBACAC,cACAC,YACAC,aACAC,aACAC,aACAC,aACAC,gBACA5L,cAAe0B,MAAMsL,QAAQhN,GAAiBA,EAAgB,CAACA,IAEnEnG,MAGJA,KAAKoT,eAAL,oCAAApT,MAAA,KAAAA,KACIA,KAAKqT,MACL,oBACArT,KAAKkR,sBAAsBoC,oBAjKvC,4BAyCQ,OACI,EACAtT,KAAKmR,oBAAoBkC,MACzBrT,KAAKoR,yBAAyBiC,MAC9BrT,KAAKqR,uBAAuBgC,MAC5BrT,KAAKsR,4BAA4B+B,MACjCrT,KAAKuR,6BAA6B8B,MAClCrC,UAAUhR,KAAKmG,gBAAiBnG,KAAKmG,cAAcjF,SACnD8P,UAAUhR,KAAK0R,YAAa1R,KAAK0R,UAAUxQ,SAC3C8P,UAAUhR,KAAK4R,aAAc5R,KAAK4R,WAAW1Q,SAC7C8P,UAAUhR,KAAK8R,aAAc9R,KAAK8R,WAAW5Q,SAC7C8P,UAAUhR,KAAKyR,cAAezR,KAAKyR,YAAYvQ,SAC/C8P,UAAUhR,KAAK6R,aAAc7R,KAAK6R,WAAW3Q,SAC7C8P,UAAUhR,KAAK2R,aAAc3R,KAAK2R,WAAWzQ,SAC7C8P,UAAUhR,KAAK+R,gBAAmB/R,KAAK+R,cAAc7Q,SACrD8P,SAAShR,KAAKwR,oBAxD1B,oCA6DQ,OAAOxR,KAAKoT,oB,2BA7DpB,GAA0C,M,0UCrDrBG,E,WAOjB,WAAYjT,I,4FAAY,SACpBN,KAAKM,KAAOA,E,sDAYDkT,GACX,OAAOA,EACF1S,QAAO,SAAA2S,GAAC,OAAIA,EAAEnT,OAASiT,EAAkCG,KAAKpT,QAC9DH,KAAI,SAAAsT,GAAC,OAAIA,EAAEnT,QAAM6B,KAAK,OACpBoR,EAAkCG,KAAKpT,S,oCAZ9C,OAAON,KAAKM,O,yBAGbkT,GAEC,OADaA,UAAU,IAAIG,MAAM,KAAKxT,KAAI,SAAA+H,GAAC,OAAIA,EAAE0L,UACpC/O,SAAS7E,KAAKM,W,gCAhBxB,EAAAoT,KAAO,IAAIH,EAAkC,QAC7C,EAAAM,aAAe,IAAIN,EAAkC,gBACrD,EAAAO,YAAc,IAAIP,EAAkC,gB,+SCC1CQ,EADpBpS,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,kEAIlB,OAAO7B,KAAK6B,WAAWE,IAAI,yB,sCAGfC,GACZ,OAAOhC,KAAK6B,WAAWE,IAAhB,8BAA2CC,M,0CAGlCC,GAChB,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,8BAA8CF,M,uCAGxC8R,GACb,OAAKA,EAAahS,GAGXhC,KAAK6B,WAAWS,IAAhB,8BAA2C0R,EAAahS,IAAMgS,GAF1DhU,KAAK6B,WAAWU,KAAK,uBAAwByR,Q,4+BChBzD,IAAMC,EAAb,YAMI,0B,4FAAA,UACI,2BACKhB,kBAAoB,GAF7B,E,UANJ,O,kOAAA,M,EAAA,G,EAAA,+BAgBQjT,KAAKiT,kBAAoB,KAhBjC,uCAoBQ,MAAO,CACHA,kBAAmBjT,KAAKiT,qBArBpC,sCAyBoBzS,GACZ,GAAKA,EAAL,CADyC,IAOrC0T,EAFIjB,EAAsBzS,EAAtByS,kBAGJA,IACAiB,EAAuBrM,MAAMsL,QAAQF,GAC/BA,EACA,CAACA,IAGXjT,KAAKiT,kBAAoBiB,KAvCjC,4B,MAYQ,OAAOlD,UAA+B,QAAvB,EAAChR,KAAKiT,yBAAiB,eAAE/R,c,2BAZhD,G,UACY,I,6RCJZ,IAAqBiT,EAArB,WACI,WAAoBtS,I,4FAAsB,SAAtB,KAAAA,a,UADxB,O,EAAA,G,EAAA,sCAGmBG,EAAIgK,GACf,4CAAsChK,EAAtC,2BAA2DgK,KAJnE,mDAQQ,OAAOhM,KAAK6B,WAAWE,IACnB,6BATZ,qCAamBC,GACX,OAAOhC,KAAK6B,WAAWE,IAAhB,kCAA+CC,MAd9D,gDAiB8BoS,GACtB,OAAOpU,KAAK6B,WAAWU,KACnB,uCACA6R,KApBZ,4CAwB0BpS,GAClB,OAAOhC,KAAK6B,WAAWE,IAAhB,kCAA+CC,EAA/C,eAzBf,yCA4BuBC,GACf,IAAIC,EAAQD,EAAI9B,KAAI,SAAC6B,GAAD,mBAAcA,MAAMG,KAAK,KAC7C,OAAOnC,KAAK6B,WAAWO,OAAhB,kCAAkDF,MA9BjE,sCAiCoBkS,GACZ,OAAKA,EAAYpS,GAMVhC,KAAK6B,WAAWS,IAAhB,kCACwB8R,EAAYpS,IACvCoS,GAPOpU,KAAK6B,WAAWU,KACnB,2BACA6R,Q,2BArChB,KAAqBD,EAAkB,aADtC,I,iCAEmC,OADfA,GAAA,O,0vBCDrB,SAASE,EAAmBC,GACxB,OAAQA,GACJ,KAAK,EACD,OAAOC,QAAQC,MAEnB,KAAK,EACD,OAAOD,QAAQE,KAEnB,KAAK,EACL,QACI,OAAOF,QAAQG,MAI3B,SAASC,EAAeH,GACpB,GAAIA,aAAiBI,IAAqB,OAAOJ,EAAMK,SAEvD,GAAIL,aAAiBrT,MAAO,OAAOqT,EAAMM,MAEzC,GAAIN,EAAMO,QAAS,OAAOP,EAAMO,QAEhC,GAAqB,iBAAVP,EAAoB,OAAOA,EAEtC,IAAIQ,EAAgBR,EAAMnM,WAC1B,GAAsB,oBAAlB2M,EAAqC,OAAOA,EAEhD,IACI,OAAOC,KAAKC,UAAUV,GACxB,MAAOW,GAEL,OADAZ,QAAQC,MAAM,4BAA6BW,GACpC,4BAIf,SAASC,EAAeC,GACpB,IACI,OAAOJ,KAAKC,UAAUG,GACxB,MAAOF,GAEL,OADAZ,QAAQC,MAAM,4BAA6BW,GACpC,4BAYf,IAAIG,EAAgD,cAA7BC,OAAOC,SAASC,SAKvC,SAASC,EAAalB,GAClB,IAAKA,EAAO,MAAO,GAEnB,GAAIA,aAAiBI,IAAqB,CACtC,IAAIe,EAjBZ,SAAkBC,GACd,IACI,OAAOX,KAAKY,MAAMD,GACpB,MAAOT,GACL,OAAO,MAaeW,CAAStB,EAAMK,UACjCkB,EAAaJ,GAAmBA,EAAgBI,WAAcvB,EAAMK,SAExE,MAAO,CACHkB,UAAWA,GAAaA,EAAU1N,WAClC2N,aAAcL,GAAmBA,EAAgBK,aACjDC,UAAWzB,EAAM0B,SAAW1B,EAAM0B,QAAQnU,IAAI,qBAC9CoU,WAAY3B,EAAM4B,eAAeC,OACjCC,WAAY9B,EAAM8B,WAClBC,IAAKhB,OAAOC,SAASgB,OAAShC,EAAM4B,eAAeK,QAAUjC,EAAM4B,eAAeG,KAI1F,MAAO,CACHR,UAAWpB,EAAeH,GAC1BwB,aAAcxB,EAAMwB,aACpBC,UAAWzB,EAAMkC,cACjBP,WAAY3B,EAAM2B,WAClBG,WAAY9B,EAAMmC,eAClBJ,IAAK/B,EAAM+B,K,IAMEK,EAFpBC,a,GACAlV,YAAOC,IAAYkV,I,cAEhB,WAAYjV,EAAYkV,I,4FAA4B,SAChD/W,KAAK6B,WAAaA,EAClB7B,KAAK+W,2BAA6BA,EAClC/W,KAAKM,KAAO,G,oDAGXyU,EAASM,GACVrV,KAAKgX,IAAI,CACL1C,SAAU,EACVS,UACAM,Y,2BAIHN,EAASP,EAAOa,GACjBrV,KAAKgX,IAAI,CACL1C,SAAU,EACVS,UACAP,QACAa,Y,4BAIFN,EAASP,EAAOa,GAClBrV,KAAKgX,IAAI,CACL1C,SAAU,EACVS,UACAP,QACAa,Y,4BAI6D,6DAAJ,GAAI,IAA/Df,gBAA+D,MAApD,EAAoD,MAAjDS,eAAiD,MAAvC,GAAuC,MAAnCP,aAAmC,MAA3B,KAA2B,MAArBa,aAAqB,MAAb,KAAa,EACjE,IACI,IAAI4B,EAAa,gBAAH,OAAmBjX,KAAKM,MAEtC,GAAIgV,EAAkB,CAClB,IAAI4B,EAAiB,GAAH,OAAMD,EAAN,aAAqBlC,GACnCoC,EAAoB,CAACD,EAAgB1C,EAAOa,GAAOvU,QACnD,SAAC6P,GAAD,OAAU,MAAOA,KAEjByG,EAAkB/C,EAAmBC,GACzC8C,EAAe,WAAf,IAAmBD,IAGvB,IAAIvB,EAAO,CACPtB,WACAhU,KAAM2W,EACNlC,UACAM,MAAOA,GAASD,EAAeC,IAG/BgC,EAAY3B,EAAalB,GACzB8C,EAAWrX,OAAOC,OAAO,GAAI0V,EAAMyB,GAEvCrX,KAAK6B,WAAWU,KAAK,cAAe+U,GAAUC,OAAM,SAACpC,GACjDZ,QAAQC,MAAM,qCAAsCW,MAGxDkC,EAAUJ,WAAajX,KAAKM,KAC5BN,KAAK+W,2BAA2BS,WAC5BlD,EACAE,EACAO,EACAsC,EACAzB,EAAKP,OAEX,MAAOF,GACLZ,QAAQC,MAAM,2BAA4BW,S,8PClJhDsC,EAAe,SAACjX,EAA2B0O,GAC7C,OAAQ1O,EAAOoV,MAAQpV,EAAOoV,KAAK1G,IAAW,uBA8B5CwI,EAAyB,SAAClX,EAAwB8H,GACpD,IAAI+K,EAAQ,EASZ,OARA7S,EAAOyH,OAAO7G,SAAQ,SAAC8G,GACF,iBAANA,GAAkBA,IAAMI,EAC/B+K,IACoB,iBAANnL,IACdmL,GAASnL,MAIVmL,GAILsE,EAAuB,SAACnX,EAA8B8H,GACxD,MAA4B,iBAAjB9H,EAAOD,MACPC,EAAOD,MAAM8H,WAGjB7H,EAAOD,QAAU+H,EAAO,IAAM,KAGnCsP,EAAoB,SAACpX,GACvB,GAAKA,EAAOD,MAIZ,OAAO,IAAOC,EAAOD,OAAOsX,QAAQ7L,OAAO,SAWzC8L,EAAkD,CACpD,CACI7I,WAAY,eACZC,MAAO,mBACP6I,cAAe,YAEnB,CACI9I,WAAY,aACZC,MAAO,oBACP6I,cAAe,YAEnB,CACI9I,WAAY,YACZC,MAAO,mBACP6I,cAAe,YAEnB,CACI9I,WAAY,OACZC,MAAO,wBACP6I,cAAe,YAEnB,CACI9I,WAAY,cACZC,MAAO,SACP8I,MAAO,oBACPC,eAAgB,UAChBC,QAAS,SAAC1X,GAAD,OAA4BkX,EAAuBlX,EAAQ,SACpE4O,eAAgB,SAAC5O,GAAD,OAAkCmX,EAAqBnX,EAAQ,SAC/EuX,cAAe,UAEnB,CACI9I,WAAY,cACZC,MAAO,SACP8I,MAAO,oBACPC,eAAgB,UAChBC,QAAS,SAAC1X,GAAD,OAA4BkX,EAAuBlX,EAAQ,UACpE4O,eAAgB,SAAC5O,GAAD,OAAkCmX,EAAqBnX,EAAQ,UAC/EuX,cAAe,UAEnB,CACI9I,WAAY,oBACZC,MAAO,SACP8I,MAAO,0BACPC,eAAgB,gBAChBC,QAAS,SAAC1X,GAAD,OAA4BkX,EAAuBlX,EAAQ,eACpE4O,eAAgB,SAAC5O,GAAD,OACZmX,EAAqBnX,EAAQ,eACjCuX,cAAe,UAEnB,CACI9I,WAAY,aACZC,MAAO,2BACP6I,cAAe,YAEnB,CACI9I,WAAY,MACZC,MAAO,UACPiJ,YAAa,SAAC3X,GAAD,OAA+BiX,EAAajX,EAAQ,YACjEuX,cAAe,YAEnB,CACI9I,WAAY,OACZC,MAAO,WACPiJ,YAAa,SAAC3X,GAAD,OAA+BiX,EAAajX,EAAQ,aACjEuX,cAAe,YAEnB,CACI9I,WAAY,eACZC,MAAO,qBACPE,eAAgBwI,EAChBQ,aAAa,GAEjB,CACInJ,WAAY,gBACZoJ,eAAe,EACfC,SAAU,CACN,CACIrJ,WAAY,qBACZC,MAAO,oBACP6I,cAAe,YAEnB,CACI9I,WAAY,SACZC,MAAO,SACPE,eA1IK,SAAC5O,GAClB,QAA4B,IAAjBA,EAAOD,MACd,MAAO,GAGX,OAAQC,EAAOD,OACX,IAAK,OACD,MAAO,OACX,IAAK,QACD,MAAO,OACX,QACI,MAAO,gBAiIP,CACI0O,WAAY,YACZC,MAAO,WACPqJ,gBAAiB,OACjBR,cAAe,WACfjX,OAAQ,sBAEZ,CACImO,WAAY,sBACZC,MAAO,qBACPqJ,gBAAiB,OACjBR,cAAe,YAEnB,CACI9I,WAAY,qBACZC,MAAO,oBACPqJ,gBAAiB,UAI7B,CACItJ,WAAY,eACZoJ,eAAe,EACfC,SAAU,CACN,CACIrJ,WAAY,aACZC,MAAO,YACP6I,cAAe,YAEnB,CACI9I,WAAY,oBACZC,MAAO,mBACPqJ,gBAAiB,OACjBR,cAAe,YAEnB,CACI9I,WAAY,aACZC,MAAO,YACPqJ,gBAAiB,OACjBR,cAAe,YAEnB,CACI9I,WAAY,aACZC,MAAO,YACPqJ,gBAAiB,OACjBR,cAAe,YAGnB,CACI9I,WAAY,aACZC,MAAO,YACPqJ,gBAAiB,OACjBR,cAAe,YAEnB,CACI9I,WAAY,aACZC,MAAO,YACPqJ,gBAAiB,OACjBR,cAAe,YAEnB,CACI9I,WAAY,WACZC,MAAO,gBACPE,eAtNO,SAAC5O,GACpB,OAAQA,EAAOD,OACX,KAAK,EACD,MAAO,MACX,KAAK,EACD,MAAO,KACX,QACI,MAAO,UAgNHgY,gBAAiB,OACjBR,cAAe,cAI3B,CACI9I,WAAY,cACZoJ,eAAe,EACfC,SAAU,CACN,CACIrJ,WAAY,UACZC,MAAO,iBACP6I,cAAe,YAEnB,CACI9I,WAAY,uBACZC,MAAO,qBACPqJ,gBAAiB,OACjBR,cAAe,WACf3I,eAjLa,SAAC5O,GAC1B,GAAKA,EAAOD,MAIZ,MAAwB,qBAAjBC,EAAOD,MAA+B,oBAAsBC,EAAOD,QA8KlE,CACI0O,WAAY,2BACZC,MAAO,yBACPqJ,gBAAiB,OACjBR,cAAe,SACf3I,eAAgBwI,KAI5B,CACI3I,WAAY,eACZuJ,cAAc,EACdC,UAAW,qBACXtJ,MAAO,IACPuJ,UAAU,EACVC,mBAAmB,EACnBZ,cAAe,WACfa,gBAAgB,EAChBC,aAAa,EACbC,OAAQ,QACRX,YAAa,SAAC3X,GACV,GAAKA,EAAOoV,KAKZ,MAAO,CACHA,KAHapV,EAAToV,KAIJmD,SAAU,uYAYlB1J,aAAc,MAIhBN,EAA+B,CACjCC,WAAY8I,EACZxI,cAAe,CACX0J,SAAU,IACVC,aAAa,EACbL,gBAAgB,EAChBC,aAAa,GAEjBK,mBAAoB,CAChBF,SAAU,KAEdG,QAAS,UACTC,aAAa,EACbC,UAAW,CACPC,aAAc,CACV,CAAEC,YAAa,sCAAuCC,MAAO,QAC7D,CAAED,YAAa,2BAA4BC,MAAO,UAClD,CAAED,YAAa,+BACf,CAAEA,YAAa,+BACf,CAAEA,YAAa,4BAGvBE,yBAAyB,EACzBC,sBAAsB,EACtBC,cAAc,EACdC,YAAaC,SAASC,KACtBC,kBAAmB,CACfC,oBAAqB,CACjBC,UAAW,aACXC,QAAS,CACLC,MAAO,CAAC,UAAW,OAAQ,WAC3BC,QAAS,CAAC,UAAW,UAAW,cAI5CC,YAAa,CAAC,sBAAuB,aAAc,YAAa,aAI9DC,EAA8B,IAAsBpQ,OAAO6E,GAC5DY,cACAE,gBAAgB,yBAChBC,S,oCCjVL,+DAEM,SAAUyK,EAA2B/Z,GAA2B,MACvCP,OAAOO,EAAOD,OAAjCwY,EAD0D,EAC1DA,SACR,GAFkE,EAChDnD,KAClB,CAIA,IAAM4E,EAAkB,aAAH,OAAgBzB,EAAhB,eACf0B,EAAY,IAAUC,SAGtBzP,EAFewP,EAAU1Y,IAAI,KACF4Y,QAAQH,GAChBtQ,OAAOuQ,GAC1BG,EAAcf,SAASgB,cAAc,OAI3C,OAHA5P,EAAK6P,KAAKta,EAAOD,OACjB0K,EAAK8P,cAAcH,GAEZA,K,gGChBL,SAAUI,EAAmBza,GAC/B,IAAM0a,EAAS,IAAwB1Q,MAAK,SAAC2Q,GAAD,OAAYA,EAAE3a,QAAUA,KACpE,OAAO0a,EAASA,EAAO1a,MAAQ,K,q1BCAnC,IAaMwO,EAA+B,CACjCC,WAAY,CACR,CAAEC,WAAY,WAAYC,MAAO,OAAQC,MAAO,KAChD,CACI6I,MAAO,gBACPQ,cAAc,EACdvJ,WAAY,GACZI,a,YAZR,oB,4FAAA,+BARa,oV,kPAOmB,QAkB9B8L,EAA8C,IAAsBjR,OAAO6E,GAC5EY,cACAC,iBACAC,gBAAgB,qCAChBC,QAECsL,EAA8C,IAAsBlR,OAAO6E,GAC5EY,cACAC,iBACAC,gBAAgB,sCAChBC,S,+SClCgBuL,EAFpB1Z,YAAOC,I,cAGJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,kEAIlB,OAAO7B,KACF6B,WACAE,IAFE,yB,sCAKKC,GACZ,OAAOhC,KAAK6B,WAAWE,IAAhB,8BAA2CC,M,0CAGlCC,GAChB,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,8BAA8CF,M,uCAGxCoZ,GACb,OAAKA,EAAatZ,GAGXhC,KAAK6B,WAAWS,IAAhB,8BAA2CgZ,EAAatZ,IAAMsZ,GAF1Dtb,KAAK6B,WAAWU,KAAK,uBAAwB+Y,Q,yECzBhE,IAAKC,EAAL,2CAAKA,GACD,iCACA,sCACA,oBAHJ,CAAKA,MAAe,KAQd,SAAUC,IACZ,MAAO,CACH,CAAEjb,MAAOgb,EAAgBE,SAAUtT,MAAO,YAC1C,CAAE5H,MAAOgb,EAAgBG,WAAYvT,MAAO,cAC5C,CAAE5H,MAAOgb,EAAgBI,QAASxT,MAAO,c,2RCV5ByT,EADpBja,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,8DAIlB,OAAO7B,KAAK6B,WAAWE,IAAhB,mB,uECVf,IAAK8Z,GAAL,SAAKA,GACD,cACA,sBAFJ,CAAKA,MAAkB,KAKR,O,ihECoBR,IAAMC,EAAb,YAWI,0B,4FAAA,UACI,2BAEKC,yBAA2B,IAAI,IACpC,EAAK7K,sBAAwB,IAAI,IACjC,EAAK+E,UAAY,KACjB,EAAKxI,SAAW,KAChB,EAAKuO,SAAW,KAChB,EAAK9U,YAAc,KACnB,EAAK+U,sBAAwB,KATjC,E,UAXJ,O,kOAAA,M,EAAA,G,EAAA,+BAsCQjc,KAAK+b,yBAAyB9U,QAC9BjH,KAAKkR,sBAAsBjK,QAC3BjH,KAAKiW,UAAY,KACjBjW,KAAKyN,SAAW,KAChBzN,KAAKgc,SAAW,KAChBhc,KAAKkH,YAAc,KACnBlH,KAAKic,sBAAwB,OA5CrC,uCAgDQ,YACOjc,KAAK+b,yBAAyB/J,iBADrC,GAEOhS,KAAKkR,sBAAsBc,iBAFlC,CAGIiE,UAAWjW,KAAKiW,UAChBxI,SAAUzN,KAAKyN,SACfuO,SAAUhc,KAAKgc,SACf9U,YAAalH,KAAKkH,YAClB8E,OAAQhM,KAAKgM,OACbiQ,sBAAuBjc,KAAKic,0BAxDxC,sCA4DoBzb,GACZ,IAAMyR,EAAiC,CACnCE,gBAAiB3R,EAAO2R,gBACxBC,gBAAiB5R,EAAO4R,gBACxBC,cAAe7R,EAAO6R,cACtBH,kBAAmB1R,EAAO0R,mBAExBgK,EAAyC,CAAExO,gBAAiBlN,EAAOkN,iBAP1C,OASxBlN,GADCyV,EARuB,EAQvBA,UAAWxI,EARY,EAQZA,SAAUuO,EARE,EAQFA,SAAU9U,EARR,EAQQA,YAAa+U,EARrB,EAQqBA,sBAIpDjc,KAAK+b,yBAAyB7I,gBAAgBgJ,GAC9Clc,KAAKkR,sBAAsBgC,gBAAgBjB,GAE3C,0DACI,CACIgE,YACAxI,WACAuO,WACA9U,cACA+U,yBAEJjc,MAGJA,KAAKoT,eAAL,oCAAApT,MAAA,KAAAA,KACIA,KAAKqT,MACL,8BACArT,KAAKkR,sBAAsBoC,oBAzFvC,4BAwBQ,OACI,EACAtT,KAAK+b,yBAAyB1I,MAC9BrC,SAAShR,KAAKiW,WAAajW,KAAKiW,UAAU/U,OAAS,GACnD8P,UAAUhR,KAAKyN,UAAYzN,KAAKyN,SAASvM,OAAS,IAClD8P,UAAUhR,KAAKgc,UAAYhc,KAAKgc,SAAS9a,OAAS,IAClD8P,UAAUhR,KAAKkH,aAAelH,KAAKkH,YAAYhG,OAAS,MA9BpE,oCAkCQ,OAAOlB,KAAKoT,oB,2BAlCpB,GAAwC,M,sRCtBnB+I,E,8LACQC,GAA6C,IAAjBC,IAAiB,yDAClE,IAAKD,EACD,MAAO,GAEX,IAAIE,EAAOD,EAAaD,EAAatb,QAAO,SAAAyb,GAAC,OAAIA,EAAEjY,YAAY8X,EAE3DI,EAAU,GAUd,OATAF,EAAKlb,SAAQ,SAAAqb,GACT,IAAInS,EAAS,CACTnC,MAAOsU,EAAGnc,KACVC,MAAOkc,EAAGza,IAGdwa,EAAQ/a,KAAK6I,MAGVkS,M,2XCbf,IAAqBE,EAArB,WACI,WAAoB7a,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAK6B,WAAaA,E,UAF1B,O,EAAA,G,EAAA,oDAMQ,OAAO7B,KAAK6B,WAAWE,IAAI,sCANnC,2DAYQuE,EACArD,GAEA,IAAMsT,EAAM,iDAAH,OAAoDjQ,EAApD,oCACLrD,EAAiB,mBAAqBA,EAAiB,IAE3D,OAAOjD,KAAK6B,WAAWE,IAAIwU,KAlBnC,wCAqBsBoG,GACd,OAAO3c,KAAK6B,WAAWS,IAAI,mCAAoCqa,Q,2BAtBvE,KAAqBD,EAAqB,aADzC,I,iCAEmC,OADfA,GAAA,O,6SCHAE,EADpBjb,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,6DAGRgb,GACV,OAAIA,EACO7c,KAAK6B,WAAWE,IAAhB,iCAA8C8a,IAElD7c,KAAK6B,WAAWE,IAAI,sB,mCAGlBC,GACT,OAAOhC,KAAK6B,WAAWE,IAAhB,2BAAwCC,M,uCAGlCC,GACb,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,2BAA2CF,M,oCAGxC4a,GACV,OAAKA,EAAU9a,GAGRhC,KAAK6B,WAAWS,IAAhB,2BAAwCwa,EAAU9a,IAAM8a,GAFpD9c,KAAK6B,WAAWU,KAAK,oBAAqBua,Q,uEC1B7D,kCAAO,IAAMC,EAAqB,SAACC,GAAwD,IAApCC,EAAoC,uDAAlB,IACrE,GAAID,GAAcC,EAAiB,MAAO,CAACA,GAM3C,IAJA,IAAMC,EAAWC,KAAKC,KAAKJ,EAAaC,GAAmBA,EACrDI,EAAUH,EAAW,EAErBI,EAAY,CAACD,GACVhd,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAMkd,EAAWF,EAAUhd,EACvBkd,EAAWP,EAAaK,GACxBC,EAAU7b,KAAK8b,GAIvB,OAAOD,I,koBCTX,IAAqBE,EAArB,WACI,WAAoB3b,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAK6B,WAAaA,E,UAF1B,W,EAAA,G,EAAA,yCAKsB4b,GACd,IAAMvb,EAAQ,YAAiB,CAAEub,eAAc,GAE/C,OAAOzd,KAAK6B,WAAWE,IAAhB,wBAAqCG,MARpD,sCAWoBF,GACZ,OAAOhC,KAAK6B,WAAWE,IAAhB,wBAAqCC,MAZpD,yCAgBQ,OAAOhC,KAAK6B,WAAWE,IAAI,mBAhBnC,sDAoBQ,OAAO/B,KAAK6B,WAAWE,IAAI,iCApBnC,4CAuB0BC,GAClB,OAAOhC,KAAK6B,WAAWE,IAAhB,wBAAqCC,EAArC,cAxBf,uCA2BqB0b,GACb,OAAO1d,KAAK6B,WAAWS,IAAhB,wBAAqCob,EAAa1b,IAAM0b,KA5BvE,6CA+B2BC,GAAgB,IAAT3b,EAAS,uDAAJ,KAC3BE,EAAQ,YAAiB,CAAEyb,UAAS,GAIxC,OAFK3b,IAAIA,EAAK,OAEPhC,KAAK6B,WAAWE,IAAhB,wBAAqCC,EAArC,yBAAwDE,EAAQ,IAAH,OAAOA,GAAU,OApC7F,8CAuC4BF,GACpB,OAAOhC,KAAK6B,WAAWE,IAAhB,wBAAqCC,EAArC,gBAxCf,8CA2C4BA,EAAI4T,GACxB,OAAO5V,KAAK6B,WAAWS,IAAhB,wBAAqCN,EAArC,kBAAyD4T,KA5CxE,+CA+C6B5T,EAAI4T,GACzB,OAAO5V,KAAK6B,WAAWS,IAAhB,wBAAqCN,EAArC,aAAoD4T,KAhDnE,6EAmDiCtV,GAnDjC,sGAoDkCN,KAAK4d,uBAAuB,CAACtd,IApD/D,cAoDYud,EApDZ,yBAsDe5d,OAAOgI,OAAO4V,GAAehV,MAAK,SAAAiV,GAAI,MAAC,MAA2B,UAApB,QAAP,EAAAA,EAAExd,UAAK,eAAEwE,mBAtD/D,qKAyD2BiZ,GAzD3B,6FA0DY5K,EAAUtL,MAAMsL,QAAQ4K,GA1DpC,SA2DqB/d,KAAK4d,uBAAuBzK,EAAU4K,EAAc,CAACA,IA3D1E,0LA8DiCA,GACzB,IAAMJ,EAAQ9V,MAAMsL,QAAQ4K,GAAeA,EAAc,CAACA,GACpD7b,EAAQ,YAAiB,CAACyb,UAAQ,GAExC,OAAO3d,KAAK6B,WAAWE,IAAhB,oDAAiEG,S,2BAlEhF,KAAqBsb,EAAmB,aADvC,I,iCAEmC,OADfA,GAAA,Q,mUCFAQ,EADpBrc,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,8DAGqB,6DAAJ,GAAI,IAA5Boc,oBAA4B,SACnC/b,EAAQ+b,EAAe,qBAAuB,GAClD,OAAOje,KAAK6B,WAAWE,IAAhB,qBAAkCG,M,kCAGjCF,GACR,OAAOhC,KAAK6B,WAAWE,IAAhB,qBAAkCC,M,sCAG7BC,GACZ,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,qBAAqCF,M,mCAGnCgc,GACT,OAAKA,EAASlc,GAGPhC,KAAK6B,WAAWS,IAAhB,qBAAkC4b,EAASlc,IAAMkc,GAF7Cle,KAAK6B,WAAWU,KAAK,cAAe2b,Q,uYCVlCC,E,sLAgBbC,EACAjO,G,QAEIkO,EAAyB,IAAIF,EACjCE,EAAuBrc,GAAKoc,EAAqBpc,GACjDqc,EAAuBpb,eAAiBmb,EAAqBnb,eAC7Dob,EAAuB/d,KAAO8d,EAAqB9d,KACnD+d,EAAuBC,WAAaF,EAAqBE,WACzDD,EAAuB/Z,SAAW8Z,EAAqB9Z,SAEvD,IAAMia,EAA2C,QAAhC,EAAGH,EAAqBI,gBAAQ,QAAI,GAErDH,EAAuBG,SAAWD,EAC7Bzd,QAAO,SAACgI,GAAD,OAAOA,EAAExE,YAChBnE,KAAI,SAAC2I,GAAD,OAAO,IAA8B2V,UAAU3V,MAExD,IAAM4V,EAAWH,EAAYhU,MAAK,SAACzB,GAAD,OAAOA,EAAExE,UAAiC,MAArBwE,EAAE6V,mBACzD,GAAID,EAAU,CACV,IAAME,EAAYL,EAAYhU,MAAK,SAACzB,GAAD,OAAOA,EAAE9G,KAAO0c,EAASC,mBACtDE,EAAaV,EAAuBW,uBAAuBJ,EAASzW,QAC1EoW,EAAuBU,cAAgB,CACnCC,kBAAkC,QAAjB,EAAEJ,aAAS,EAATA,EAAWte,YAAI,QAAI,KACtC2e,oBAAqBP,EAASpe,KAC9B4e,MAAOL,EAAW1e,KAAI,SAACY,GAAD,MAAQ,CAAE8b,KAAM9b,EAAEoe,OAAQ5e,MAAOQ,EAAEqe,gBAG7Df,EAAuBU,cAAgB,CAAEC,kBAAmB,KAAMC,oBAAqB,KAAMC,MAAO,IAWxG,OARAb,EAAuBX,aAAevN,EAAc5F,MAChD,SAACZ,GAAD,OAAOA,EAAE3H,KAAOoc,EAAqBnb,kBAErCob,EAAuBX,eACvBW,EAAuBgB,oBAAvB,UAAgDhB,EAAuBX,aAAalP,WAApF,cAAoG6P,EAAuBX,aAAapd,OAE5I+d,EAAuBja,YAAa,EAE7Bia,I,6CAKmBpW,GAC1B,IACI,IAAMqX,EAASrK,KAAKY,MAAM5N,GAAU,MACpC,OAAOJ,MAAMsL,QAAQmM,GAAUA,EAAS,GAC1C,SACE,MAAO,Q,2CAMLd,EAAWxe,KAAKwe,SAASre,KAAI,SAAC2I,EAAG0B,GACnC,IAAM+U,EAAQzW,EAAE0W,UAKhB,OADKD,EAAMvd,KAAIud,EAAMvd,KAAOwI,EAAQ,IAC7B+U,KARR,EAWyE,QAArB,EAAGvf,KAAK+e,qBAAa,QAAI,GAAxEC,EAXL,EAWKA,kBAAmBC,EAXxB,EAWwBA,oBAAqBC,EAX7C,EAW6CA,MAC1CO,GAAkBP,UAAS,IAAIpe,QAAO,SAACC,GAAD,OAAOA,EAAE8b,QACrD,GAAImC,GAAqBC,GAAuBQ,EAAeve,OAAS,EAAG,CACvE,IAAMwe,EAAgBlB,EAASjU,MAAK,SAACzB,GAAD,OAAOA,EAAExI,OAAS0e,KAChDW,EAAkBnB,EAASjU,MAAK,SAACzB,GAAD,OAAOA,EAAExI,OAAS2e,KACpDS,GAAiBC,IACjBD,EAAczX,OAASgN,KAAKC,UAAUuK,EAAetf,KAAI,SAACY,GAAD,OAAOA,EAAE8b,SAClE8C,EAAgBhB,gBAAkC,QAAnB,EAAGe,EAAc1d,UAAE,QAAI,KACtD2d,EAAgB1X,OAASgN,KAAKC,UAC1BuK,EAAetf,KAAI,SAACY,GAAD,MAAuB,CAAEoe,OAAQpe,EAAE8b,KAAMuC,MAAOre,EAAER,iBAI7Eie,EAASpd,SAAQ,SAAC0H,GACdA,EAAE6V,gBAAkB,KACpB7V,EAAEb,OAAS,QAInB,MAAO,CACHjG,GAAIhC,KAAKgC,GACTiB,eAAgBjD,KAAKiD,eACrB3C,KAAMN,KAAKM,KACXge,WAAYte,KAAKse,WACjBha,SAAUtE,KAAKsE,SACfka,iB,0TClHSoB,EADpBje,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,iEAIlB,OAAO7B,KAAK6B,WAAWE,IAAI,mC,uCAGd8d,GACb,OAAO7f,KAAK6B,WAAWU,KAAK,gCAAiCsd,Q,qyCCP9D,IAAMC,EAAb,YAKI,0B,4FAAA,UACI,2BAEKC,aAAe,EAHxB,E,UALJ,O,kOAAA,M,EAAA,G,EAAA,+BAwBQ/f,KAAK+f,aAAe,IAxB5B,uCA4BQ,OAA4B,IAArB/f,KAAK+f,aAA0C,IAArB/f,KAAK+f,YAChC,CAAElN,WAAiC,IAArB7S,KAAK+f,aACnB,OA9Bd,sCAiCoBvf,GACZ,GAAKA,EAAL,CAIA,IAAIqS,EACJ,OAAQrS,EAAOqS,YACX,IAAK,OACDA,EAAa,EACb,MACJ,IAAK,QACDA,EAAa,EACb,MACJ,QACIA,GAAc,EAGtB,0DAA6B,CAAEA,cAAc7S,SAlDrD,iCAYQ,OAAOA,KAAK+f,aAZpB,aAe0BC,GAClBhgB,KAAK+f,YAAcC,IAhB3B,4BAoBQ,OAAQhP,QAA6B,IAAtBhR,KAAK+f,kB,2BApB5B,G,UAA4C,I,iRCF5C,IAAqBE,EAArB,WACI,WAAoBpe,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAK6B,WAAaA,E,UAF1B,O,EAAA,G,EAAA,kCAKkE,IAArDqe,EAAqD,uDAApC,KAAMxS,EAA8B,uDAAF,GACpDxL,EAAQ,YAAiB,CACzBge,SACAxS,oBACD,GAEH,OAAO1N,KAAK6B,WAAWE,IAAhB,gBAA6BG,MAX5C,8BAcYF,GACJ,OAAOhC,KAAK6B,WAAWE,IAAhB,gBAA6BC,MAf5C,kCAkBgBC,GACR,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,gBAAgCF,MApB/C,oDAwBQ,OAAOlC,KAAK6B,WAAWE,IAAI,iCAxBnC,+BA2Baoe,GACL,OAAKA,EAAKne,GAGHhC,KAAK6B,WAAWS,IAAhB,gBAA6B6d,EAAKne,IAAMme,GAFpCngB,KAAK6B,WAAWU,KAAK,SAAU4d,KA7BlD,iCAkCene,GACP,OAAOhC,KAAK6B,WAAWY,MAAhB,gBAA+BT,GAAM,CAAEoe,UAAU,MAnChE,0CAsCwBC,GAChB,OAAOrgB,KAAK6B,WAAWS,IAAI,cAAe+d,KAvClD,2CA0CyBre,GACjB,OAAOhC,KAAK6B,WAAWE,IAAhB,gBAA6BC,EAA7B,yB,2BA3Cf,KAAqBie,EAAW,aAD/B,I,iCAEmC,OADfA,GAAA,O,gxCCGd,IAAMK,EAAb,YAII,0B,4FAAA,UACI,2BACKC,cAAgB,IAAaC,OAFtC,E,UAJJ,O,kOAAA,M,EAAA,G,EAAA,+BAsBQxgB,KAAKugB,cAAgB,IAAaC,SAtB1C,uCA0BQ,MAAO,CACH7N,aAAc3S,KAAKugB,iBA3B/B,sCA+BoB/f,GACZ,0DAA6BA,EAAQR,QAhC7C,mCAUQ,OAAOA,KAAKugB,eAVpB,aAa4BE,GACpBzgB,KAAKugB,cAAgBE,GAAkB,IAAaD,SAd5D,4BAkBQ,OAAQxP,SAAShR,KAAKugB,eAAiBvgB,KAAKugB,gBAAkB,IAAaC,a,2BAlBnF,G,UAA8C,I,yyCCGvC,IAAME,EAAb,YAOI,0B,4FAAA,UACI,2BACKC,iBAAmB,KACxB,EAAKC,wBAA0B,GAHnC,E,UAPJ,O,kOAAA,M,EAAA,G,EAAA,+BAgCQ5gB,KAAK2gB,iBAAmB,KACxB3gB,KAAK4gB,wBAA0B,KAjCvC,uCAqCQ,MAAO,CACH9d,gBAAiB9C,KAAK2gB,iBACtBE,uBAAwB7gB,KAAK4gB,2BAvCzC,sCA2CoBpgB,GACPA,GAIL,0DAA6BA,EAAQR,QAhD7C,sCAeQ,OAAOA,KAAK2gB,kBAfpB,aAkB+BG,GACvB9gB,KAAK2gB,iBAAmBG,EACxB9gB,KAAK4gB,wBAA0B,KApBvC,4BAwBQ,OACI,EACA5P,SAAShR,KAAK8C,iBACdkO,UAAUhR,KAAK4gB,0BAA2B5gB,KAAK4gB,wBAAwB1f,c,2BA3BnF,G,UACY,GAaR,aADC,YAAa,oB,2GAGb,O,kCC3BL,oFAGa6f,EAAuB,SAA0BC,GAC1D,IAAMC,EACFhM,KAAKY,MAAMqL,aAAaC,QAAQ,IAAsBC,kBAAoB,GAW9E,OAVwBnhB,OAAOohB,UAAUC,eAAeC,KACpDN,EACAD,EAAYQ,YAIZP,EAAcD,EAAYQ,UAAYR,EACtCE,aAAaO,QAAQ,IAAsBL,eAAgBnM,KAAKC,UAAU+L,KAGvEA,EAAcD,EAAYQ,WAGxBE,EAAuB,SAA0BV,GAC1D,IAAMC,EACFhM,KAAKY,MAAMqL,aAAaC,QAAQ,IAAsBC,kBAAoB,GAK9E,OAHAH,EAAcD,EAAYQ,UAAYR,EACtCE,aAAaO,QAAQ,IAAsBL,eAAgBnM,KAAKC,UAAU+L,IAEnEA,EAAcD,EAAYQ,Y,gSCtBhBG,E,6LAuBDphB,GACZ,OAAQA,GACJ,IAAK,OACL,IAAK,MACL,IAAK,IACL,IAAK,OACD,OAAO,EACX,IAAK,QACL,IAAK,KACL,IAAK,IACL,IAAK,QACL,KAAK,KACD,OAAO,EACX,QACI,OAAOqhB,QAAQrhB,M,mCA3BvB,OAAOP,KAAK6hB,gBAAgB7hB,KAAKO,Q,aAGpBA,GACS,YAAlBP,KAAK8hB,WACL9hB,KAAKO,MAAQA,EAAQ,OAAS,W,uCAKlC,OAAOP,KAAKM,OAAS,IAAiCyhB,0B,gCAX1D,aADC,YAAa,S,0GAGb,O,kCCPL,IAAYC,EAAZ,+GAAYA,GACR,qBACA,uBACA,yBAHJ,CAAYA,MAAyB,KAM9B,IAAMC,EAAgF,CACzFC,EAAG,CAAE3hB,MAAOyhB,EAA0BG,MAAOha,MAAO,SACpDia,EAAG,CAAE7hB,MAAOyhB,EAA0BK,OAAQla,MAAO,UACrDma,EAAG,CAAE/hB,MAAOyhB,EAA0BO,QAASpa,MAAO,YAGpD,SAAUqa,IACZ,MAAO,CACHP,EAA2B,GAC3BA,EAA2B,GAC3BA,EAA2B,IAI5B,IAAMQ,EAAkF,CAC3FP,EAAG,CACCQ,eAAgB,EAChBC,eAAgB,EAChBC,kCACI,6DACJC,gDACI,6DAERT,EAAG,CACCM,eAAgB,EAChBC,eAAgB,EAChBC,kCACI,sEACJC,gDACI,mEAERP,EAAG,CACCI,eAAgB,EAChBC,eAAgB,GAChBC,kCACI,wEACJC,gDACI,uE,yRC/CSC,EADpBnhB,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,kEAIlB,OAAO7B,KAAK6B,WAAWE,IAAhB,qC,4CAGWzB,GAClB,OAAON,KAAK6B,WAAWE,IAAhB,0CAAuDzB,EAAvD,iB,oVCTMyiB,EADpBphB,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,8DAGP6L,EAAiB9K,GAE5B,IAAImI,EAAkB9K,OAAOC,OAAO,GAAI0C,EAAS,CAC7C8K,gBAAiB7F,MAAMsL,QAAQzF,GAC3BA,EACA,CAACA,KAGLxL,EAAQc,YAAiB+H,GAAiB,GAE9C,OAAO/K,KACF6B,WACAE,IAFE,sBAEkBG,EAAQ,IAAH,OAAOA,GAAU,U,+jCChBvD,IAAqB8gB,EAArB,WACI,WAAoBnhB,I,4FAAsB,SAAtB,KAAAA,a,UADxB,O,EAAA,G,EAAA,2CAI4E,IAAtDe,EAAsD,uDAA5C,GAAIqI,EAAwC,uDAAT,UACvD/I,EAAQ,YAAiB,EAAD,GAAMU,EAAN,CAAeqI,UAAQ,GAEnD,OAAOjL,KAAK6B,WAAWE,IAAhB,yBAAuCG,EAAQ,IAAH,OAAOA,GAAU,OAP5E,uCAUqBF,GACb,OAAOhC,KAAK6B,WAAWE,IAAhB,0BAAuCC,MAXtD,2CAcyBC,GACjB,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAOnC,KAAK6B,WAAWO,OAAhB,0BAA0CF,MAhBzD,wCAmBsB+gB,GACd,OAAKA,EAAcjhB,GAGZhC,KAAK6B,WAAWS,IAAhB,0BAAuC2gB,EAAcjhB,IAAMihB,GAFvDjjB,KAAK6B,WAAWU,KAAK,mBAAoB0gB,Q,2BArB5D,KAAqBD,EAAoB,aADxC,I,iCAEmC,OADfA,GAAA,O,wQCFAE,E,WAUjB,WAAoBC,I,4FAAgC,SAAhC,KAAAA,kBAAgC,IACxCC,EAAapjB,KAAKmjB,gBAAlBC,SACRpjB,KAAKqjB,OAAS,EACdrjB,KAAKsjB,SAAWzb,MAAMsL,QAAQiQ,IAAaA,EAASliB,OAASkiB,EAAS,GAAGE,SAAW,EACpFtjB,KAAKujB,YAAc,E,2EAInBvjB,KAAKwjB,gBAAkB,IAAuBC,IAAIzjB,KAAKmjB,gBAAiB,QAAQ,GAChFnjB,KAAKwjB,gBAAgBE,mBAAqB,gBAC1C1jB,KAAKwjB,gBAAgBG,MAAO,EAE5B3jB,KAAK4jB,yBAA2B,IAAuBH,IACnDzjB,KAAKmjB,gBACL,QACA,GAEJnjB,KAAK4jB,yBAAyBF,mBAAqB,wCAEnD1jB,KAAK6jB,sBAAwB,IAAuBJ,IAAIzjB,KAAKmjB,gBAAiB,QAAQ,GACtFnjB,KAAK6jB,sBAAsBH,mBAAqB,oBAChD1jB,KAAK6jB,sBAAsBF,MAAO,EAElC3jB,KAAK8jB,8BAEL9jB,KAAKmjB,gBAAgBC,SAAS3hB,KAAKzB,KAAKwjB,iBACxCxjB,KAAKmjB,gBAAgBC,SAAS3hB,KAAKzB,KAAK4jB,0BACxC5jB,KAAKmjB,gBAAgBC,SAAS3hB,KAAKzB,KAAK6jB,yB,oDAIxC7jB,KAAKwjB,gBAAgBtI,EAAIlb,KAAKqjB,OAC9BrjB,KAAKwjB,gBAAgBO,EAAI/jB,KAAKqjB,OAC9BrjB,KAAKwjB,gBAAgBrU,MAAQnP,KAAKmjB,gBAAgBhU,MAAQ,EAAInP,KAAKqjB,OACnErjB,KAAKwjB,gBAAgBQ,UAAY,QAEjChkB,KAAK4jB,yBAAyB1I,EAAIlb,KAAKqjB,OACvCrjB,KAAK4jB,yBAAyBG,EAAI/jB,KAAKqjB,OAASrjB,KAAKsjB,SAAWtjB,KAAKujB,YACrEvjB,KAAK4jB,yBAAyBzU,MAAQnP,KAAKmjB,gBAAgBhU,MAAQ,EAAInP,KAAKqjB,OAE5ErjB,KAAK6jB,sBAAsB3I,EAAIlb,KAAKqjB,OACpCrjB,KAAK6jB,sBAAsBE,EAAI/jB,KAAKqjB,OACpCrjB,KAAK6jB,sBAAsB1U,MAAQnP,KAAKmjB,gBAAgBhU,MAAQ,EAAInP,KAAKqjB,Y,iQCrDrEY,E,aAAZ,SAAYA,GACR,oBACA,kBACA,sCAHJ,CAAYA,MAAc,KAMnB,IAAMlR,EAA0D,CACnEmR,QAAS,CAAE3jB,MAAO0jB,EAAeC,QAAS/b,MAAO,WACjDgc,OAAQ,CAAE5jB,MAAO0jB,EAAeE,OAAQhc,MAAO,UAC/Cic,iBAAkB,CAAE7jB,MAAO0jB,EAAeG,iBAAkBjc,MAAO,sBAKjE,SAAUkc,IACZ,MAAO,CACHtR,EAAgBmR,QAChBnR,EAAgBoR,OAChBpR,EAAgBqR,kBAsBlB,SAAUE,IACZ,MAAO,CACHvR,EAAgBoR,OAChBpR,EAAgBqR,kBAIlB,SAAUG,EAAsBC,GAClC,OAAOA,IAAmBP,EAAeG,iBAAmBI,EAAenc,WAAa,oBAGtF,SAAUoc,EAA0BC,GACtC,OAAOA,IAAa,IAASrZ,UA7BtB,CACH0H,EAAgBmR,SA8BdG,IAOJ,SAAUM,EAA4BC,GAExC,OANE,SAA0CF,GAC5C,OAAOD,EAA0B,IAASC,IAKnCG,CADU,IAASD,IAlDf,O,2SCRf,IAAaE,EAAb,WAGI,WAAoBjjB,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAKgN,UAAY,6B,UAJzB,O,EAAA,G,EAAA,qDAQQ,OAAOhN,KAAK6B,WAAWE,IAAI/B,KAAKgN,aARxC,iDAa+BhL,GACvB,OAAOhC,KAAK6B,WAAWE,IAAhB,UAAuB/B,KAAKgN,UAA5B,YAAyChL,MAdxD,oDAoBQ+iB,GAEA,OAAO/kB,KAAK6B,WAAWU,KACnBvC,KAAKgN,UACL+X,KAxBZ,4DA6BQ/iB,EACAgjB,GAEA,OAAOhlB,KAAK6B,WAAWS,IAAhB,UACAtC,KAAKgN,UADL,YACkBhL,GACrBgjB,KAlCZ,mDAsCiChjB,GACzB,OAAOhC,KAAK6B,WAAWS,IAAhB,UACAtC,KAAKgN,UADL,YACkBhL,EADlB,UAEH,QAzCZ,kDA6CgCA,GACxB,OAAOhC,KAAK6B,WAAWS,IAAhB,UACAtC,KAAKgN,UADL,YACkBhL,EADlB,SAEH,QAhDZ,oDAoDkCA,GAC1B,OAAOhC,KAAK6B,WAAWO,OAAhB,UACApC,KAAKgN,UADL,YACkBhL,S,2BAtDjC,KAAa8iB,EAA8B,aAD1C,I,iCAImC,OAHvBA,I,+tBCLHG,GAAV,SAAUA,EAAkBC,EAAWC,GAAvC,sFACQC,EAAcC,IAAOH,GAD7B,YAGWE,EAAcD,GAHzB,gBAIQ,OAJR,SAIcC,EAJd,OAKQA,EAAcC,IAAOD,GAAarX,IAAI,EAAG,KALjD,sBAQI,OARJ,SAQUoX,EARV,uCAWO,SAASG,EAAqBJ,EAAWC,EAASI,GACrD,IAAKL,EAAW,MAAM,IAAI/jB,MAAM,wCAEhC,IAAKgkB,EAAS,MAAM,IAAIhkB,MAAM,sCAE9B,IAAIqkB,EAAoB,GAL2C,uBAOnE,YAAiBP,EAAkBI,IAAOH,GAAYG,IAAOF,IAA7D,oDAASM,EAAT,QACID,EAAkB/jB,KAAK,CACnBikB,qBAAsBD,EACtBE,aAAc,MAV6C,kFAanE,IAAKJ,GAAwC,IAAxBA,EAAarkB,OAAc,OAAOskB,EAbY,2BAenE,IAfmE,IAenE,EAfmE,iBAe1DI,EAf0D,QAgB3DF,EAAuBL,IAAOO,EAAYF,sBAC1CG,EAAmBL,EAAkBjb,MACrC,SAACub,GAAD,OAAOA,EAAEJ,qBAAqBrd,aAAeqd,EAAqBrd,cAElEwd,IACAA,EAAiBF,aAAaC,EAAY5a,SAAW,CACjD+a,eAAgBH,EAAYG,eAC5BC,cAAeJ,EAAYI,iBARvC,EAAwBT,EAAxB,+CAAsC,IAf6B,kFA2BnE,IAAIU,EAAsB,KA3ByC,uBA4BnE,YAAkCT,EAAkB5kB,UAApD,+CAA+D,oBAAlDilB,GAAkD,WAC3D,GAAII,EACA,cAAkChmB,OAAOW,QAAQilB,EAAiBF,cAAlE,gCAAU3a,EAAV,KAAmBkb,EAAnB,KACIA,EAAWC,sBACLF,EAAoBjb,IAClBib,EAAoBjb,GAAS+a,kBAChCG,EAAWH,eAExBE,EAAsBJ,EAAiBF,cApCwB,kFAuCnE,OAAOH,I,swCCjDX,IAOaY,EAAb,YACI,oB,4FAAA,+BARa,qW,UAOjB,O,kOAAA,M,EAAA,G,EAAA,4BAKS5lB,GAA2B,IACpB6lB,EAAS7lB,EAAT6lB,KACR,GAAqB,IAAjBA,EAAKC,QAAe,KACZC,EAAuBF,EAAvBE,mBACFC,EAAYvR,KAAKY,MAAMZ,KAAKC,UAAUqR,EAAmB,GAAG3Q,cAC3D4Q,EAAUvjB,eAEjBzC,EAAM,UAAgBgmB,cAEfhmB,EAAM,UAGjB,wCAAWA,Q,2BAjBnB,GAAwD,M,yNCPpDimB,EAAQC,IAAEC,GAAGC,YAAYH,MAE7B,SAASI,IACL,OAAO,IAAIja,KAAKA,KAAKka,IAAIC,MAAMna,KAAMoa,YAGlC,SAASC,EAAUxB,EAAMzZ,EAAQkb,GACpC,GAAIzB,aAAgB7Y,KAAM,OAAO,IAAIA,KAAK6Y,EAAK0B,UAAuC,IAA3B1B,EAAK2B,qBAUhE,GATI,4BAA4BpmB,KAAKykB,KACjCzZ,EAAShM,KAAKqnB,YAAY,eAE1B,gDAAgDrmB,KAAKykB,KACrDzZ,EAAShM,KAAKqnB,YAAY,qBAE1B,iEAAiErmB,KAAKykB,KACtEzZ,EAAShM,KAAKqnB,YAAY,wBAE1B,wCAAwCrmB,KAAKykB,GAAO,CACpD,IAEI6B,EAAMC,EAFNC,EAAU,oBACVC,EAAQhC,EAAKiC,MAAM,sBAEvBjC,EAAO,IAAI7Y,KACX,IAAK,IAAIvM,EAAI,EAAGA,EAAIonB,EAAMvmB,OAAQb,IAG9B,OAFAinB,EAAOE,EAAQG,KAAKF,EAAMpnB,IAC1BknB,EAAMK,SAASN,EAAK,IACZA,EAAK,IACT,IAAK,IACD7B,EAAKoC,WAAWpC,EAAKqC,aAAeP,GACpC,MACJ,IAAK,IACD9B,EAAOsC,eAAe1G,UAAU2G,UAAUzG,KAAKwG,eAAe1G,UAAWoE,EAAM8B,GAC/E,MACJ,IAAK,IACD9B,EAAKoC,WAAWpC,EAAKqC,aAAqB,EAANP,GACpC,MACJ,IAAK,IACD9B,EAAOsC,eAAe1G,UAAU4G,SAAS1G,KAAKwG,eAAe1G,UAAWoE,EAAM8B,GAI1F,OAAOV,EAAQpB,EAAKyC,iBAAkBzC,EAAK0C,cAAe1C,EAAKqC,aAAcrC,EAAK2C,cAAe3C,EAAK4C,gBAAiB5C,EAAK6C,iBAEhI,IAAIb,EAAQhC,GAAQA,EAAKiC,MAAM1nB,KAAKuoB,iBAAmB,GACvD9C,EAAO,IAAI7Y,KACX,IAyCI4b,EAAKC,EAAUnB,EAzCfhI,EAAS,GACToJ,EAAgB,CAAC,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,OAAQ,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,MAC3FC,EAAc,CACdC,GAAI,SAASC,EAAG3gB,GACZ,OAAO2gB,EAAEC,YAAY5gB,IAEzB6gB,EAAG,SAASF,EAAG3gB,GACX,OAAO2gB,EAAEC,YAAY5gB,IAEzB8gB,GAAI,SAASH,EAAG3gB,GACZ,OAAO2gB,EAAEI,cAAc/gB,IAE3B7H,EAAG,SAASwoB,EAAG3gB,GACX,OAAO2gB,EAAEI,cAAc/gB,IAE3BghB,GAAI,SAASL,EAAG3gB,GACZ,OAAO2gB,EAAEM,cAAcjhB,IAE3BY,EAAG,SAAS+f,EAAG3gB,GACX,OAAO2gB,EAAEM,cAAcjhB,IAE3BkhB,KAAM,SAASP,EAAG3gB,GACd,OAAO2gB,EAAEQ,eAAenhB,IAE5BohB,GAAI,SAAST,EAAG3gB,GACZ,OAAO2gB,EAAEQ,eAAe,IAAOnhB,IAEnCqU,EAAG,SAASsM,EAAG3gB,GAEX,IADAA,GAAK,EACEA,EAAI,GAAGA,GAAK,GAGnB,IAFAA,GAAK,GACL2gB,EAAEU,YAAYrhB,GACP2gB,EAAEV,eAAiBjgB,GACtB2gB,EAAEhB,WAAWgB,EAAEf,aAAe,GAClC,OAAOe,GAEXA,EAAG,SAASA,EAAG3gB,GACX,OAAO2gB,EAAEhB,WAAW3f,KAQ5B,GAHAygB,EAAW,EAAQA,EAAW,GAASA,EAAW,GAASA,EAAW,EACtEA,EAAW,GAASA,EAAW,EAC/BlD,EAAOoB,EAAQpB,EAAK+D,cAAe/D,EAAKgE,WAAYhE,EAAKiE,UAAW,EAAG,EAAG,GACtEjC,EAAMvmB,QAAU8K,EAAOyb,MAAMvmB,OAAQ,CACrC,IADqC,eACrByoB,EAAPtpB,GAGL,GAFAmoB,EAAMZ,SAASH,EAAMpnB,GAAI,IACzBinB,EAAOtb,EAAOyb,MAAMpnB,GAChBupB,MAAMpB,GACN,OAAQlB,GACJ,IAAK,KACDmB,EAAW/B,IAAED,EAAMS,GAAU2C,QAAQ/oB,QAAO,WACxC,IAAIyb,EAAIvc,KAAK8pB,MAAM,EAAGrC,EAAMpnB,GAAGa,QAE/B,OAAOqb,GADCkL,EAAMpnB,GAAGypB,MAAM,EAAGvN,EAAErb,WAGhCsnB,EAAM9B,IAAEqD,QAAQtB,EAAS,GAAIhC,EAAMS,GAAU2C,QAAU,EACvD,MACJ,IAAK,IACDpB,EAAW/B,IAAED,EAAMS,GAAU8C,aAAalpB,QAAO,WAC7C,IAAIyb,EAAIvc,KAAK8pB,MAAM,EAAGrC,EAAMpnB,GAAGa,QAE/B,OAAOqb,GADCkL,EAAMpnB,GAAGypB,MAAM,EAAGvN,EAAErb,WAGhCsnB,EAAM9B,IAAEqD,QAAQtB,EAAS,GAAIhC,EAAMS,GAAU8C,aAAe,EAK3D,MAAT1C,GAAgBhI,EAAM,KACN,MAAZmI,EAAMpnB,IAA+B,KAAjBif,EAAM,KAC1BA,EAAM,GAAS,GAEF,OAAbmI,EAAMpnB,IAAgC,KAAjBif,EAAM,KAC3BA,EAAM,IAAU,KAGxBA,EAAOgI,GAAQkB,GAhCVnoB,EAAI,EAAGspB,EAAM3d,EAAOyb,MAAMvmB,OAAQb,EAAIspB,EAAKtpB,IAAK,EAAzCspB,EAAPtpB,GAkCT,IAAK,IAAWyI,EAAPzI,EAAI,EAAMA,EAAIqoB,EAAcxnB,OAAQb,KACzCyI,EAAI4f,EAAcroB,MACTif,IAAWsK,MAAMtK,EAAOxW,KAC7B6f,EAAY7f,GAAG2c,EAAMnG,EAAOxW,IAGxC,OAAO2c,EAGJ,SAASwE,EAAWxE,EAAMzZ,EAAQkb,GACrC,GAAY,MAARzB,EACA,MAAO,GAEX,IAAI+C,EAAM,CACNO,EAAGtD,EAAK2C,cACR/nB,EAAGolB,EAAK4C,gBACRvf,EAAG2c,EAAK6C,gBACRO,EAAGpD,EAAKqC,aACRvL,EAAGkJ,EAAK0C,cAAgB,EACxB+B,EAAGzD,EAAMS,GAAU8C,YAAYvE,EAAK0C,eACpCgC,GAAI1D,EAAMS,GAAU2C,OAAOpE,EAAK0C,eAChCmB,GAAI7D,EAAKyC,iBAAiB7f,WAAW9G,UAAU,GAC/C6nB,KAAM3D,EAAKyC,iBACX9nB,EAAGqlB,EAAK2C,eAAiB,GAAK,KAAO,MAI5B,GAATI,EAAIO,EACJP,EAAII,GAAK,IAETJ,EAAII,GAAM5c,EAAOyb,MAAM5iB,SAAS,MAAQ2jB,EAAIO,EAAI,GAC5CP,EAAIO,EAAI,GACRP,EAAIO,EACRP,EAAII,IAAMJ,EAAII,GAAK,GAAK,IAAM,IAAMJ,EAAII,IAG5CJ,EAAIQ,IAAMR,EAAInoB,EAAI,GAAK,IAAM,IAAMmoB,EAAInoB,EACvCmoB,EAAIU,IAAMV,EAAI1f,EAAI,GAAK,IAAM,IAAM0f,EAAI1f,EACvC0f,EAAI4B,IAAM5B,EAAIK,EAAI,GAAK,IAAM,IAAML,EAAIK,EACvCL,EAAI6B,IAAM7B,EAAIjM,EAAI,GAAK,IAAM,IAAMiM,EAAIjM,EAGvC,IAFA,IAAI+N,EAAY,GACZC,EAAO7D,IAAE8D,OAAO,GAAIxe,EAAOye,YACtBpqB,EAAI,EAAGspB,EAAM3d,EAAOyb,MAAMvmB,OAAQb,EAAIspB,EAAKtpB,IAC5CkqB,EAAKrpB,QACLopB,EAAU7oB,KAAK8oB,EAAKG,SAExBJ,EAAU7oB,KAAK+mB,EAAIxc,EAAOyb,MAAMpnB,KAEpC,OAAOiqB,EAAUnoB,KAAK,M,yRC3KLwoB,EADpBhpB,YAAOC,I,cAEJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,oEAIlB,OAAO7B,KAAK6B,WAAWE,IAAhB,uC,8CAGazB,GACpB,OAAON,KAAK6B,WAAWE,IAAhB,4CAAyDzB,EAAzD,iB,uECdf,IAAKsqB,GAAL,SAAKA,GACD,uBACA,qBAFJ,CAAKA,MAAyB,KAKf,O,yRCAMC,EAFpBlpB,YAAOC,I,cAGJ,WAAYC,I,4FAAY,SACpB7B,KAAK6B,WAAaA,E,2EAKlB,OAAO7B,KACF6B,WACAE,IAFE,4B,0+BCHR,IAAM+oB,EAAb,YAMI,0B,4FAAA,UACI,2BACK/X,gBAAkB,GAF3B,E,UANJ,O,kOAAA,M,EAAA,G,EAAA,+BAgBQ/S,KAAK+S,gBAAkB,KAhB/B,uCAoBQ,MAAO,CACHA,gBAAiB/S,KAAK+S,mBArBlC,sCAyBoBvS,GACZ,GAAKA,EAAL,CADuC,IAOnCuqB,EAFIhY,EAAoBvS,EAApBuS,gBAGJA,IACAgY,EAAqBljB,MAAMsL,QAAQJ,GAC7BA,EACA,CAACA,IAGX/S,KAAK+S,gBAAkBgY,KAvC/B,4B,MAYQ,OAAO/Z,UAA6B,QAArB,EAAChR,KAAK+S,uBAAe,eAAE7R,c,2BAZ9C,G,UACY,I,oPCPL,IAAM8pB,EAAb,yB,4FAAA,S,UAAA,O,EAAA,G,EAAA,kCAgCQ,MAAM,IAAI7pB,MAAM,6BAhCxB,mCAmCiB4jB,GACT/kB,KAAKirB,iBAAmBlG,EAAOkG,iBAC/BjrB,KAAKkrB,gBAAkBnG,EAAOmG,gBAC9BlrB,KAAKmrB,sBAAwBpG,EAAOoG,sBACpCnrB,KAAKorB,YAAcrG,EAAOqG,YAC1BprB,KAAKqrB,QAAUtG,EAAOsG,QACtBrrB,KAAKsrB,KAAOvG,EAAOuG,KACnBtrB,KAAKqV,MAAQ0P,EAAO1P,MACpBrV,KAAKurB,WAAaxG,EAAOwG,WACzBvrB,KAAKwrB,QAAUzG,EAAOyG,QACtBxrB,KAAKyrB,YAAc1G,EAAO0G,YAC1BzrB,KAAK0rB,UAAY3G,EAAO2G,UACxB1rB,KAAK2rB,gBAAkB5G,EAAO4G,gBAC9B3rB,KAAK4rB,aAAe7G,EAAO6G,eAhDnC,kCAgBQ,IAAIC,EAAyB,GAY7B,OAXAA,EAAapqB,KAAKzB,KAAKorB,aACnBprB,KAAK2rB,iBACLE,EAAapqB,KAAb,YAAuBzB,KAAK2rB,kBAE5B3rB,KAAKqrB,SAAWrrB,KAAKsrB,MAAQtrB,KAAKqV,OAASrV,KAAKurB,aAChDM,EAAapqB,KAAb,YAAuBzB,KAAKqrB,UAC5BQ,EAAapqB,KAAb,YAAuBzB,KAAKsrB,OAC5BO,EAAapqB,KAAb,YAAuBzB,KAAKqV,QAC5BwW,EAAapqB,KAAb,YAAuBzB,KAAKurB,cAGzBM,EAAa1pB,KAAK,S,2BA5BjC,M,6PCCA,IAAqB8d,EAArB,WACI,WAAoBpe,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAK6B,WAAaA,E,UAF1B,O,EAAA,G,EAAA,2CAMQ,OAAO7B,KAAK6B,WAAWE,IAAI,wB,2BANnC,KAAqBke,EAAW,aAD/B,I,iCAEmC,OADfA,GAAA,O,yRCAA6L,EADpBnqB,YAAOoqB,I,cAEJ,WAAY5e,I,4FAAiB,SACzBnN,KAAKmN,gBAAkBA,E,mDAGvB6e,EAAuBC,GACvB,OAAID,GACAA,EAAsBtgB,MACtBsgB,EAAsBtgB,KAAKwgB,SAC3BF,EAAsBtgB,KAAKwgB,QAAQC,eACnCH,EAAsBtgB,KAAKwgB,QAAQC,cAAcC,WACjDJ,EAAsBtgB,KAAKwgB,QAAQC,cAAcC,UAAUC,YAEpDrsB,KAAKmN,gBACPmf,8BACAC,MAAK,SAAAC,GACF,OAAIA,EACOP,IAEAA,EAAKQ,YAGjBR,S,4SCtBZ,IAAeS,EAAtB,WAMI,WAAY3T,I,4FAAgB,SACxB/Y,KAAKya,UAAY,IAAUC,SAC3B1a,KAAK2sB,cAAgB3sB,KAAKya,UAAU1Y,IAAI,KACxC,IAAM6qB,EAAc5sB,KAAK2sB,cAAchS,QAAnB,oBAAwC5B,EAAxC,gBACpB/Y,KAAKiL,KAAO2hB,EAAY1iB,OAAOlK,KAAKya,WACpCza,KAAK4a,YAAcf,SAASgB,cAAc,O,UAXlD,O,EAAA,G,EAAA,4BAcUra,GACFR,KAAKiL,KAAK6P,KAAKta,GACfR,KAAKiL,KAAK8P,cAAc/a,KAAK4a,aAC7B5a,KAAKiL,KAAK4hB,aAjBlB,uCAoBsBrsB,MApBtB,iCAyBQ,MAAM,IAAIW,MAAM,6BAzBxB,gCA6BQ,OAAO,IA7Bf,yCAiCQ,MAAO,SAjCf,4CAqCQ,OAAO,IArCf,yCAyCQ,OAAO,IAzCf,+JAyDQ,OAAOnB,KAAK4a,cAzDpB,gCA6DQ5a,KAAKiL,KAAK6hB,SACV9sB,KAAKiL,KAAK8hB,cACV/sB,KAAKiL,KAAK+hB,gB,2BA/DlB,M,2lBCJO,IAAeC,EAAtB,yB,4FAAA,SACY,KAAAC,iBAAmB,SACnB,KAAAC,cAAgB,U,UAF5B,O,EAAA,G,EAAA,iDAKsCC,GAC9B,IAAK,IAAIC,KAAOD,OACKE,IAAbF,EAAIC,WACGD,EAAIC,GAInB,OAAOD,IAZf,qDAe0CG,G,cAC5BC,EACkE,QADvD,EACsC,QADtC,EAC2B,QAD3B,EACgB,QADhB,EACQ,QADR,EACbD,aAAW,EAAXA,EAAaE,gBAAQ,eAAErgB,cAAM,eAAEqN,iBAAS,eAAE2R,iBAAS,eAAEsB,uBAAe,eAAEF,YAC1E,QACIA,GACAA,EAAY,kBACZA,EAAY,iBAAiBtsB,OAAS,KArBlD,yCA6BiCmsB,GACzB,IAAMM,EAAezM,aAAaC,QAAQkM,GAC1C,OAAOM,GAAgBA,EAAazsB,OAAS,EACvC+T,KAAKY,MAAM8X,GACX,OAjCd,yCAoCiCN,EAAaD,GAAQ,WAC1CptB,KAAK4tB,0BACLC,aAAa7tB,KAAK4tB,0BAGtB5tB,KAAK4tB,yBAA2BE,YAAW,WACvC,EAAKF,yBAA2B,KAChC1M,aAAaO,QAAQ4L,EAAKpY,KAAKC,UAAUkY,MAC1C,OA5CX,uCAgDQ1lB,EACAqmB,EACA5b,GAEA,IAAM6b,EAAyB,QAAH,OAAWtmB,EAAX,kBAAgD,IAAhBA,EAAoB,GAAK,IAAzD,KACtB4L,EAAmB,GAAH,OAAMya,EAAN,gBAAiC5b,GAEvD,OAAK4b,GAAwB5b,EAM7B,UAAUnS,KAAKmtB,cAAf,YAAgC7Z,EAAhC,YAAoD0a,GALzCtmB,EAAc,EAAd,UACE1H,KAAKmtB,cADP,YACwBa,GACzBhuB,KAAKktB,mBA1DvB,2DAgEmDe,GAC3C,OAAKA,EAIEpmB,MAAMsL,QAAQ8a,GAAiBA,EAAgB,CAACA,GAH5C,OAlEnB,6CAwEqCztB,EAAa4sB,GAC1C,IAAMc,EAAgBluB,KAAKmuB,0BAA0B3tB,GACrDP,OAAOwE,KAAKypB,GAAe9sB,SAAQ,SAACgtB,GAChC,IAIQ9lB,EAJF+lB,EACFpuB,OAAOquB,yBAAyBruB,OAAOsuB,eAAenB,GAAMgB,IAC5DnuB,OAAOquB,yBAAyBlB,EAAKgB,GACzC,GAAIC,EAWA,OATiBA,EAAKtsB,KAAOssB,EAAKtlB,MAI9BT,EAAO,EAFK+lB,EAAKtsB,IAAI+Y,KAAKsS,EACZrrB,KAGdssB,EAAK9tB,QACL+H,EAAO,EAAO+lB,EAAK9tB,QAEf+H,GACJ,IAAK,UACD8kB,EAAIgB,GAAwC,SAA5BF,EAAcE,GAC9B,MACJ,IAAK,SACDhB,EAAIgB,GAAYpd,OAAOkd,EAAcE,IACrC,MACJ,QACIhB,EAAIgB,GAAYF,EAAcE,Y,2BAjGtD,M,oECAO,IAAeI,EAAtB,c,4FAAA,UACoB,EAAAzM,qBAAuB,qBACvB,EAAA0M,+BAAiC,+B,0PCFhCC,E,WAOjB,WAAYpuB,I,4FAAY,SACpBN,KAAKM,KAAOA,E,2DAQZ,MAAO,CACH,CAAE6H,MAAO,OAAQ5H,MAAOmuB,EAAkBC,KAAKruB,MAC/C,CAAE6H,MAAO,SAAU5H,MAAOmuB,EAAkBE,OAAOtuB,W,oCANvD,OAAON,KAAKM,U,gCAXT,EAAAuK,QAAU,IAAI6jB,EAAkB,WAChC,EAAAC,KAAO,IAAID,EAAkB,QAC7B,EAAAE,OAAS,IAAIF,EAAkB,W,gSCHZG,E,8LACDtD,GACrB,IAAKA,EACD,OAAO,EAGX,IAAMuD,EAAW,IAAIC,OAAO,6BACtBC,EAAY,IAAID,OAClB,wEAEJ,QAAID,EAAS9tB,KAAKuqB,MAGdyD,EAAUhuB,KAAKuqB,K,qCAMD0D,GAClB,IAAKA,EACD,OAAO,EAGX,IAAMC,EACF,sIAGJ,OAFuBD,EAAyBtb,MAAM,QAEhCxP,OAAM,SAACgrB,GAAD,OAAQD,EAAWluB,KAAKmuB,U,gvGCpB5D,SAASC,EAAeC,EAAYC,G,UAE1BC,EAC6D,QADrD,EAC2C,QAD3C,EACmC,QADnC,EADM,EAAG,gBAAH,cAED5H,KAAK2H,UAAyB,eAAEE,cAAM,eAAEC,gBAAQ,QAAI,KAEnErvB,EAAIyZ,SAASgB,cAAc,KAC/BhB,SAASC,KAAK4V,YAAYtvB,GAC1B,IAAImW,EAAMhB,OAAOoa,IAAIC,gBAAgBP,GACrCjvB,EAAEyvB,KAAOtZ,EACTnW,EAAE0vB,SAAWP,EACbnvB,EAAE2vB,QACFxa,OAAOoa,IAAIK,gBAAgBzZ,GAG/B,SAAS0Z,EAAsBZ,GAC3B,IAAMliB,EAAkB,IAAUuN,SAAS3Y,IAAI,KACzCiE,EAAS,IAAU0U,SAAS3Y,IAAI,KACtCstB,EAAKa,OACA3D,MAAK,SAAC4D,GACH,IADQ,EACKlb,KAAKY,MAAMsa,IACkB,GAAlCna,EAFA,EAEAA,aAAcjB,EAFd,EAEcA,QACtB,MAAM,IAAI,IAAYA,EAASiB,MAElCuB,OAAM,SAACpC,GAAkB,IACdib,EAAcjb,EAAdib,UACRpqB,EAAOwO,MACH,2BACA,iEAGJ,IAAM6b,EACFD,GAA2B,MAAdA,EACP,0IACA,oEACVjjB,EAAgBK,UAAU,2BAA4B6iB,MAI3D,SAAeC,EAAtB,kC,iDAAO,WAAkCC,GAAlC,sGAAuDC,EAAvD,+BAAyE,MACtEC,EAAc,IAAU/V,SAAS3Y,IAAI,MAE/B2uB,WAAY,GAElBC,EAAM,IAAIC,gBACZC,aAAe,OACnBF,EAAIG,mBAAqB,WACrB,GAAuB,IAAnBH,EAAII,WAAkB,CACtB,IAAMzoB,EAAOqoB,EAAIK,kBAAkB,gBAC7B1B,EAA2BqB,EAAIK,kBAAkB,uBACjD3B,EAAO,IAAI4B,KAAK,CAACN,EAAI9b,UAAW,CAAEvM,SAGxC,GADAmoB,EAAYC,WAAY,EACL,MAAfC,EAAIpjB,OAGJ,YAFA6hB,EAAeC,EAAMC,GAIzBW,EAAsBZ,KAIX,OAAfmB,GACAG,EAAIO,KAAK,OAAQX,GAAa,GAC9BI,EAAIQ,iBAAiB,eAAgB,oBACrCR,EAAI7qB,KAAKmP,KAAKC,UAAUsb,MAExBG,EAAIO,KAAK,MAAOX,GAAa,GAC7BI,EAAI7qB,QA7BL,4C,00CCzCP,IACMsrB,E,YACF,oB,4FAAA,+BAFmB,sD,4RAMd5wB,GACDA,EAAM,OAAa,IAEnB,wCAAWA,Q,8BARgB,M,gpDCKnC,IAAqB6wB,EAArB,WAGI,WAAoBxvB,I,4FAAsB,SAAtB,KAAAA,aAChB7B,KAAKsxB,aAAgB,IAAeC,GAAGC,Q,YAJ/C,S,EAAA,G,EAAA,gCAOaC,EAAaxmB,EAAMymB,GACxB,IAAI3mB,EAAkB0mB,EACtB1mB,EAAgBE,KAAOA,EACvBF,EAAgB2mB,YAAcA,EAE9B,IAAIxvB,EAAQ,YAAiB6I,GAAiB,GAE9C,OAAO/K,KAAK6B,WAAWE,IAAhB,gCAA8CG,EAAQ,IAAH,OAAOA,GAAU,OAdnF,8BAiBYF,EAAI0vB,GACR,OAAO1xB,KAAK6B,WAAWE,IAAhB,iCAA8CC,GAA9C,OAAoD0vB,EAAc,oBAAsB,OAlBvG,wCAsBQ,MAAO,CACH,CAAE1vB,GAAI,EAAG6a,KAAM,aAAcvc,KAAM,eACnC,CAAE0B,GAAI,EAAG6a,KAAM,aAAcvc,KAAM,eACnC,CAAE0B,GAAI,EAAG6a,KAAM,YAAavc,KAAM,aAClC,CAAE0B,GAAI,EAAG6a,KAAM,iBAAkBvc,KAAM,uBA1BnD,gCA8BiB0E,EAAY2sB,GAIrB,IAHA,IAAIC,EAAc,EAAI5sB,GAClB6sB,EAAiB,GAEdD,EAAY1wB,QACf2wB,EAAQpwB,KAAKmwB,EAAYnnB,OAAO,EAAGknB,IAEvC,OAAOE,IArCf,kCAwCgB5vB,GAAa,WACjB6vB,EAAY9xB,KAAK+xB,UAAU9vB,EAAK,KACpC,OAAOuJ,EAAQwmB,IAAIF,EAAU3xB,KAAI,SAAA8B,GAC7B,IAAIC,EAAQD,EAAI9B,KAAI,SAAA6B,GAAE,mBAAUA,MAAMG,KAAK,KAC3C,OAAO,EAAKN,WAAWO,OAAhB,iCAAiDF,UA5CpE,+B,EAAA,oCAgD2B+vB,EAAQhwB,GAhDnC,kIAgDkDiwB,EAhDlD,+BAgDyE,GAC7DJ,EAAY9xB,KAAK+xB,UAAU9vB,EAAK,KAjD5C,SAkD4BuJ,EAAQwmB,IAAIF,EAAU3xB,KAAI,SAAA8B,GAC1C,IAAI2T,EAAO,EAAH,CAAK3T,OAAQiwB,GACrB,OAAO,EAAKrwB,WAAWS,IAAhB,8CAA2D2vB,GAAUrc,OApDxF,OAwDQ,IANIuc,EAlDZ,OAuDYC,EAAmB,GAvD/B,4BAwDQ,EAAmBD,EAAnB,+CAASE,EAAT,QACID,EAAiB3wB,KAAjB,MAAA2wB,EAAgB,EAASC,IAzDrC,kQA2DeD,GA3Df,6E,wKAAA,kFA8DgBnwB,EAAeqwB,GACvB,OAAOtyB,KAAKuyB,iBAAiB,SAAUtwB,EAAK,CAAEqwB,qBA/DtD,oCAkEkBrwB,GACV,OAAOjC,KAAKuyB,iBAAiB,WAAYtwB,KAnEjD,uCAsEqBA,EAAeuwB,EAAUC,EAAmBC,GACzD,OAAO1yB,KAAKuyB,iBAAiB,gBAAiBtwB,EAAK,CAAEuwB,WAAUC,oBAAmBC,eAvE1F,oCA0EkBC,GACV,IAAMzwB,EAAQ,YAAiBywB,GAAgB,GAC/C,OAAO3yB,KAAK6B,WAAWE,IAAhB,uCAAqDG,EAAQ,IAAH,OAAOA,GAAU,OA5E1F,4CA+E0BwL,GAClB,IAAIxL,EAAQ,YAAiB,CAEzBe,eAAgByK,IACjB,GACH,OAAO1N,KAAK6B,WAAWE,IAAhB,+CAA6DG,EAAQ,IAAH,OAAOA,GAAU,OApFlG,8CAuF4BA,GAOpB,IAAMmE,EAAc,YAAiBnE,GAAO,GAC5C,OAAOlC,KAAK6B,WAAWE,IAAhB,+CAA6DsE,EAAc,IAAH,OAAOA,GAAgB,OA/F9G,+BAkGauH,GACL,OAAKA,EAAK5L,GAGHhC,KAAK6B,WAAWS,IAAhB,iCAA8CsL,EAAK5L,IAAM4L,GAFrD5N,KAAK6B,WAAWU,KAAK,yBAA0BqL,KApGlE,kCAyGgBP,GACR,OAAOrN,KAAK6B,WAAWU,KAAK,8BAA+B8K,KA1GnE,2CA6GyBrL,GACjB,OAAOhC,KAAK6B,WAAWE,IAAhB,iCAA8CC,EAA9C,sBA9Gf,kCAiHgBmM,EAASykB,GACjB,IAAI5N,EAAU,CACV/iB,IAAKkM,EACLykB,UAAWA,EACXtB,aAActxB,KAAKsxB,cAGvB,OAAOtxB,KAAK6B,WAAWU,KAAK,uCAAwCyiB,KAxH5E,sCA2HoB7W,EAAS0kB,GAKrB,IAAIC,EAAiB,GACrBD,EAAOzxB,SAAQ,SAAA2xB,GAAC,OAAID,EAAerxB,MALJuxB,EAK+BD,GAJ5CE,OAAO,GAAGC,cAAgBF,EAAOlJ,MAAM,IADzD,IAA+BkJ,KAO/B,IAAIhO,EAAU,CACV/iB,IAAKkM,EACL2kB,eAAgBA,EAChBxB,aAActxB,KAAKsxB,cAGnBpvB,EAAQ,YAAiB8iB,GAAS,GAEtC,OAAOhlB,KAAK6B,WAAWE,IAAhB,kDAAgEG,EAAQ,IAAH,OAAOA,GAAU,OA3IrG,mDA8IiCiM,GACzB,IAAI6W,EAAU,CACV/iB,IAAKkM,GAGLjM,EAAQ,YAAiB8iB,GAAS,GAEtC,OAAOhlB,KAAK6B,WAAWE,IAAhB,8DAA4EG,EAAQ,IAAH,OAAOA,GAAU,OArJjH,yCAwJuBiM,EAASglB,GACxB,IAAIjxB,EAAQ,YAAiB,CACzBiM,QAASA,EACTglB,kBACA7B,aAActxB,KAAKsxB,eACpB,GACH,qDAAgDpvB,EAAQ,IAAH,OAAOA,GAAU,MA9J9E,qDAkKQiM,EACAilB,EACAC,GACA,IAAMhtB,EAAc,YAChB,CACI8H,UACAilB,iCACAC,mCACA/B,aAActxB,KAAKsxB,eACpB,GAEP,2EAAqEjrB,Q,2BA7K7E,KAAqBgrB,EAAW,aAD/B,I,iCAImC,OAHfA,GAAA,Q,kjCCiBrB,IAAMiC,EAAgB,SAACC,GAAD,wBACPA,EAAQjzB,KADD,YACSizB,EAAQC,yBAejCC,EAAsC,SACxCC,EACAC,EACAC,GAEA,IAAMC,EAAsB5e,KAAKY,MAAM6d,EAAczrB,QAC/C6rB,EAA2B7e,KAAKY,MAAM8d,EAAa1rB,QAEzD,GAAIyrB,EAAc/U,kBAAoBkV,EAAoB3yB,OACtD,MAAM,IAAI,IAAY,gEAAiE,GAE3F,IAAKyyB,EAAahV,kBAAoBmV,EAAyB5yB,OAC3D,MAAM,IAAI,IAAY,4DAA6D,GAGvF,IAAM6yB,EAAoB,GAEpBC,EAAuB,CACzBhc,MAAOsb,EAAcI,GACrBzkB,WAAYykB,EAAcpzB,KAC1B2zB,SAAU,SAACzzB,GAAD,OACNkzB,EAAcF,yBAA2BhzB,EAAOoV,KAAK4d,wBACrDI,GACJM,WAAY,yBACZC,iBAAiB,EACjBC,iBAAkB,CACdnsB,OAAQ4rB,GAEZ1b,YAAa,SAAC3X,GAAD,OACTA,EAAOoV,KAAK4I,SAAWhe,EAAOoV,KAAK4I,SAASkV,EAAcpzB,MAAQ,MACtE+zB,YAAa,SAAC7zB,GAAU,IACZ8zB,EAAa9zB,EAAb8zB,SACFC,EA7Ca,SAACC,EAAiCC,GAC7D,IAAMC,EAAiBF,EAAejqB,MAAK,SAACoqB,GAAD,OAAQA,EAAGxV,SAAWsV,KACjE,IAAKC,EACD,MAAM,IAAI,IAAJ,iCAA0CD,EAA1C,eAAoE,GAG9E,OAAOC,EAAetV,MAuCKwV,CACfd,EACAQ,EAASjsB,YAMb,OAHA7H,EAAOoV,KAAK4I,SAASkV,EAAcpzB,MAAQg0B,EAASjsB,WACpD7H,EAAOoV,KAAK4I,SAASmV,EAAarzB,MAAQi0B,EAAWlsB,YAE9C,GAEXwsB,eAAgB,CACZ,gBAAiB,SAACr0B,GAAD,OACbkzB,EAAcF,yBAA2BhzB,EAAOoV,KAAK4d,wBACzD,2BAA4B,kBAAM,KAGpCsB,EAAsB,CACxB9c,MAAOsb,EAAcK,GACrB1kB,WAAY0kB,EAAarzB,KACzB2zB,SAAU,SAACzzB,GAAD,OACNmzB,EAAaH,yBAA2BhzB,EAAOoV,KAAK4d,wBACpDI,GACJzb,YAAa,SAAC3X,GAAD,OACTA,EAAOoV,KAAK4I,SAAWhe,EAAOoV,KAAK4I,SAASmV,EAAarzB,MAAQ,MACrE+zB,YAAa,SAAC7zB,GAGV,OAFAA,EAAOoV,KAAK4I,SAASmV,EAAarzB,MAAQE,EAAO8zB,SAASjsB,YAEnD,GAEXwsB,eAAgB,CACZ,gBAAiB,SAACr0B,GAAD,OACbmzB,EAAaH,yBAA2BhzB,EAAOoV,KAAK4d,wBACxD,0BAA2B,kBAAM,KAOzC,OAHAO,EAAQtyB,KAAKuyB,GACbD,EAAQtyB,KAAKqzB,GAENf,GAGLgB,EAAyC,SAC3CC,EACApB,GAEA,IAAMG,EAAoB,GAiC1B,OAhCAiB,EAAsB5zB,SAAQ,SAAC6zB,GAC3BA,WAAIzW,SAASpd,SAAQ,SAACmyB,GAClB,IAAM2B,EAAiB,CACnBld,MAAOsb,EAAcC,GACrBtkB,WAAYskB,EAAQjzB,KACpB2zB,SAAU,SAACzzB,GAAD,OACNy0B,EAAGjzB,KAAOxB,EAAOoV,KAAK4d,wBAA0BI,GACpDO,iBAAiB,EACjBhc,YAAa,SAAC3X,GACV,OAAOy0B,EAAGjzB,KAAOxB,EAAOoV,KAAK4d,wBACvBhzB,EAAOoV,KAAK4I,SACRhe,EAAOoV,KAAK4I,SAAS+U,EAAQjzB,MAEjC,MAEV+zB,YAAa,SAAC7zB,GACV,OAAIy0B,EAAGjzB,KAAOxB,EAAOoV,KAAK4d,yBAI1BhzB,EAAOoV,KAAK4I,SAAS+U,EAAQjzB,MAAQE,EAAO8zB,SAASjsB,YAC9C,IAEXwsB,eAAgB,CACZ,gBAAiB,SAACr0B,GAAD,OAAYy0B,EAAGjzB,KAAOxB,EAAOoV,KAAK4d,0BAI3DO,EAAQtyB,KAAKyzB,SAIdnB,GAGEoB,EAAb,WAII,WAAYC,I,4FAAoD,SAC5Dp1B,KAAKq1B,gBAAkBD,EACvBp1B,KAAKs1B,SAAW,G,UANxB,O,EAAA,G,EAAA,4CAcQC,EACA3B,GAEA,IAAM4B,EAAgB,IAAI9sB,IACtB6sB,aAA6B,EAA7BA,EAA+Bp1B,KAAI,SAACwJ,GAAD,MAAO,CAACA,EAAE8rB,aAAc9rB,EAAEzC,iBAG3DwuB,EAAc,CAChBzmB,WAAY,kBACZ+I,MAAO,kBACP2d,yBAAyB,EACzBC,qCAAqC,EACrCC,mBAAmB,EACnB5B,SAAUL,EACVM,WAAY,yBACZC,iBAAiB,EACjBC,iBAAkB,CACdnsB,OAAQ,EAAIutB,EAAcvtB,WAE9BkQ,YAAa,SAAC3X,GAAD,OAA+Bg1B,EAAczzB,IAAIvB,EAAOoV,KAAK6f,eAC1EpB,YAAa,SAAC7zB,GAOV,OANAg1B,EAAcp0B,SAAQ,SAAC8G,EAAG7G,GAClB6G,IAAM1H,EAAO8zB,WACb9zB,EAAOoV,KAAK6f,aAAep0B,OAI5B,GAEXwzB,eAAgB,CACZ,eAAgB,SAACr0B,GAAD,OAAaA,EAAOoV,KAAK6f,gBAMjD,OAFAz1B,KAAKs1B,SAAS7zB,KAAKi0B,GAEZ11B,OAlDf,2CAqDgC4zB,GACxB,IACMkC,EAAoB,IAAIlpB,KAAK,KAAM,EAAG,GACtCmpB,EAAoB,IAAO,IAAInpB,MAAQopB,QAAQ,OAAOjoB,IAAI,EAAG,QAAQkoB,SACrEP,EAAc,CAChBzmB,WAAY,kBACZ+I,MAAO,kBACPic,SAAUL,EACVO,iBAAiB,EACjBhc,YAAa,SAAC3X,GAAD,OAAY,IAAY01B,OAAO11B,EAAOoV,KAAKugB,iBACxD9B,YAAa,SAAC7zB,GACV,IAAIilB,EAAO,IAAOjlB,EAAO8zB,SAVd,sBAeX,OAJA9zB,EAAOoV,KAAKugB,eAAiB1Q,EAAK2Q,UAAUN,EAAmBC,GACzDtQ,EAAKwQ,SACL,MAEC,GAEX7B,iBAAkB,CACd2B,qBAEJM,mBAAoB,SAAC71B,GAIjB,MAAO,CACH81B,UAJgB91B,EAAZ+1B,QACAvV,YAIYwV,iBAAmB,IAAsBC,OAC/C,IACA,MAGlB5B,eAAgB,CACZ,eAAgB,SAACr0B,GAAD,OAAaA,EAAOoV,KAAKugB,kBAMjD,OAFAn2B,KAAK+zB,QAAQtyB,KAAKi0B,GAEX11B,OA5Ff,iDA+FsC4zB,GAAmB,WAC3C8B,EAAc,CAChBzmB,WAAY,wBACZ+I,MAAO,wBACPic,SAAUL,EACVM,WAAY,yBACZC,iBAAiB,EACjBC,iBAAkB,CACdnsB,OAAQ,EACDjI,KAAKq1B,gBAAgBqB,oCAAoCv2B,KAAI,SAAC+a,GAAD,OAAOA,EAAE/S,WAGjFgQ,YAAa,SAAC3X,GACV,IAAMm2B,EACF,EAAKtB,gBAAgBqB,oCAAoCnsB,MACrD,SAAC2Q,GAAD,OAAOA,EAAE3a,QAAUC,EAAOoV,KAAK4d,0BAGvC,OAAOmD,aAAc,EAAdA,EAAgBp2B,QAASyQ,OAAO2lB,aAAc,EAAdA,EAAgBp2B,OAAS,EAC1Do2B,EAAexuB,MACf,MAEVksB,YAAa,SAAC7zB,GACV,IAAMwP,EAAexP,EAAO8zB,SAEtBlW,EACF,EAAKiX,gBAAgBuB,8BAA8B5mB,GACjDwjB,EAAyBpV,aAAoB,EAApBA,EAAsBpc,GAE/C60B,EAAc,GAUpB,OATAzY,WAAsBI,SAASpd,SAAQ,SAAC0H,GAAD,OAAQ+tB,EAAY/tB,EAAExI,MAAQ,QAErEE,EAAOoV,KAAK4d,uBAAyBA,EACrChzB,EAAOoV,KAAK4I,SAAWqY,EAEnBrD,IACAhzB,EAAOoV,KAAK1O,YAAc,OAGvB,GAEX4vB,mBAAoB,SAACC,GAAgC,IACzCC,EAA4BD,EAA5BC,SAAU1C,EAAkByC,EAAlBzC,SAAU2C,EAAQF,EAARE,IAC5B,GAAID,IAAa1C,EAAjB,CAIA,IAAM4C,EACF,EAAK7B,gBAAgBuB,8BAA8BI,GACjDG,EACF,EAAK9B,gBAAgBuB,8BAA8BtC,GACjD8C,EAA4BF,aAAuB,EAAvBA,EAAyBl1B,GACrDq1B,EAA4BF,aAAuB,EAAvBA,EAAyBn1B,GAErDs1B,EAAcL,EAAIM,gBAClBC,EAA2B,EAAKC,6BAClCL,EACAE,GAGEI,EAAuB,EAAKC,0BAC9BN,EACAC,EACA1D,GAGJ4D,EAAe/sB,OAAf,MAAA+sB,EAAc,CAAQA,EAAet2B,OAAS,EAAG,GAAnC,SAAyCw2B,KACvDT,EAAIW,cAAcJ,MAM1B,OAFAx3B,KAAK+zB,QAAQtyB,KAAKi0B,GAEX11B,OAxKf,wCA2K6B4zB,GACrB,IAAMsB,EAAiB,CACnBjmB,WAAY,qBACZC,MAAO,cACP+kB,SAAU,SAACzzB,GAAD,OACLA,EAAOoV,KAAK4d,wBAA0BI,GAC3CM,WAAY,wBACZC,iBAAiB,EACjBC,iBAAkB,CACdyD,UAAW,IACXC,KAAM,GACNC,KAAM,IAEVlD,eAAgB,CACZ,gBAAiB,SAACr0B,GAAD,OAAYA,EAAOoV,KAAK4d,wBACzC,eAAgB,SAAChzB,GAAD,OACXA,EAAOoV,KAAK4d,yBAA2BhzB,EAAOoV,KAAK1O,eAMhE,OAFAlH,KAAK+zB,QAAQtyB,KAAKyzB,GAEXl1B,OAjMf,oCAoMyBg4B,GACjB,IAAK,IAAI3K,KAAOrtB,KAAKq1B,gBAAgB4C,mCAAoC,QACrE,EAAAj4B,KAAKs1B,UAAS7zB,KAAd,UACOgyB,EACCzzB,KAAKq1B,gBAAgB6C,oBAAoB7K,GACzCrtB,KAAKq1B,gBAAgB8C,mBAAmB9K,GACxC2K,KAKZ,OAAOh4B,OA/Mf,uCAkN4Bg4B,GAAoB,MAQxC,OAPA,EAAAh4B,KAAKs1B,UAAS7zB,KAAd,UACOszB,EACC/0B,KAAKq1B,gBAAgB+C,+BACrBJ,KAIDh4B,OA1Nf,kCA8NQu1B,EACAyC,EACAK,GAAiC,MAK3BC,EAAqB,CACvB,CACIrpB,WAAY,YACZC,MAAO,YACP+kB,SAAU+D,EACV9D,WAAY,yBACZC,iBAAiB,EACjBC,iBAAkB,CACdnsB,OAXYowB,EAAwB,YACtC,KADsC,EACR,MAClC,MAYF,CACIppB,WAAY,eACZglB,UAAU,EACV9b,YAAa,SAAC3X,GACV,IAAM+3B,EAAiBhD,aAA6B,EAA7BA,EAA+BhrB,MAClD,SAAC0qB,GAAD,OAAQA,EAAGQ,eAAiBj1B,EAAOoV,KAAK6f,gBAG5C,OAAO8C,EACqBA,EAAeC,cA9WpCr4B,KAAI,SAACs4B,GAAD,gBAAWA,EAAG3qB,WAAW+O,SAAQ1a,KAAK,MA+W3C,QAOlB,OAFA,EAAAnC,KAAK+zB,SAAQtyB,KAAb,QAAqB62B,GAEdt4B,OAjQf,mDAqQQwzB,EACA8D,G,QAEMoB,EAEL,QAF2B,EAAG14B,KAAKq1B,gBAAgBsD,QAAQpuB,MACxD,SAACzB,GAAD,OAAOA,EAAE0qB,yBAA2BA,YACvC,eAAEhV,SAEH,GAAIka,GAA0Bz4B,OAAOwE,KAAKi0B,GAAwBx3B,OAC9D,OAAOo2B,EAEX,IAAMsB,EACkD,QADpC,EAAG54B,KAAKq1B,gBACvBwD,4BAA4BrF,UAAuB,eAClDhV,SAASre,KAAI,SAAC+oB,GAAD,OAAQoK,EAAcpK,MAEzC,OAAOoO,EAAYx2B,QAAO,SAACg4B,GAAD,QAASF,aAAc,EAAdA,EAAgB/zB,SAASi0B,EAAE,aAnRtE,gDAuRQtF,EACA8D,EACAU,GAEA,IAAKxE,EACD,MAAO,GAOX,GAJwB8D,EAAY/sB,MAAK,SAAC2Q,GAAD,OACrCA,EAAC,MAAU6d,SAAX,WAAwBvF,OAIxB,MAAO,GAGX,IAAMkE,EAAuB,GACvBsB,EACFh5B,KAAKq1B,gBAAgB4D,kCAAkCzF,GACrD0F,EACFl5B,KAAKq1B,gBAAgB8D,qCAAqC3F,GAE9D,GAAIwF,GAAkBA,EAAexa,SAAStd,OAAQ,CAClD,IAAMsuB,EAASxvB,KAAKq1B,gBAAgB+D,oBAAoBJ,EAAexa,UACvE,IAAK,IAAIsH,KAAK0J,EAAQ,CAClB,IAAMrQ,EAASnf,KAAKq1B,gBAAgB6C,oBAAoBpS,EAAG0J,GACrDpQ,EAAQpf,KAAKq1B,gBAAgB8C,mBAAmBrS,EAAG0J,GACzDkI,EAAWj2B,KAAX,MAAAi2B,EAAU,EAASjE,EAAoCtU,EAAQC,EAAO4Y,MAU9E,OANIkB,GAAqBA,EAAkB1a,SAAStd,QAChDw2B,EAAWj2B,KAAX,MAAAi2B,EAAU,EACH3C,EAAuC,CAACmE,GAAoBlB,KAIhEN,IA5Tf,8BAUQ,OAAO13B,KAAKs1B,c,2BAVpB,M,8OC9JqB+D,E,8LAUb,IAJ+D,IAA5Cn4B,EAA4C,uDAAnCic,KAAKmc,MAAsB,EAAhBnc,KAAKoc,UAAgB,EACxDh5B,EAAQ,GACRi5B,EAAQ,uCAEHn5B,EAAI,EAAGA,EAAIa,EAAQb,IACxBE,GAASi5B,EAAMrc,KAAKmc,MAAMnc,KAAKoc,SAAWC,EAAMt4B,SAEpD,OAAOX,M,yXCNMk5B,E,WAsBjB,c,4FAAA,SACIz5B,KAAK05B,uBAAyB,IAAuBC,WACrD35B,KAAK45B,SAAW,EAChB55B,KAAK65B,sBAAwB,GAC7B75B,KAAK85B,SAAW,wBAChB95B,KAAK+5B,eAAiB,GACtB/5B,KAAKg6B,mBAAqB,GAE1Bh6B,KAAKi6B,cAAgB,IAAIrtB,KACzB5M,KAAKk6B,iBAAmBl6B,KAAKm6B,4B,0DAqEzB,WACAC,EAAW,GAWf,OAVAn6B,OAAOwE,KAAKzE,MAAMoB,SAAQ,SAAAC,GACF,MAAhBA,EAAE4xB,OAAO,KACTmH,EAAS/4B,GAAK,EAAKA,OAI3B+4B,EAAQ,UAAgBp6B,KAAKklB,UAC7BkV,EAAQ,QAAcp6B,KAAKmlB,QAC3BiV,EAAQ,cAAoBp6B,KAAKq6B,cAE1BD,I,mCAGErV,GACJA,IAGL/kB,KAAK85B,SAAW/U,EAAO+U,SACvB95B,KAAKklB,UAAYH,EAAOG,UACxBllB,KAAKmlB,QAAUJ,EAAOI,QACtBnlB,KAAKs6B,kBAAoBvV,EAAOuV,kBAChCt6B,KAAK65B,sBAAwB9U,EAAO8U,sBACpC75B,KAAK45B,SAAW7U,EAAO6U,SACvB55B,KAAKq6B,cAAgBtV,EAAOsV,cAC5Br6B,KAAK05B,uBAAyB3U,EAAO2U,uBACrC15B,KAAKu6B,gBAAkBxV,EAAOwV,gBAC9Bv6B,KAAKw6B,gBAAkBzV,EAAOyV,gBAC9Bx6B,KAAKy6B,iBAAmB1V,EAAO0V,iBAC/Bz6B,KAAK06B,mBAAqB3V,EAAO2V,mBACjC16B,KAAK26B,kBAAoB5V,EAAO4V,kBAChC36B,KAAK46B,gBAAkB7V,EAAO6V,gBAC9B56B,KAAK66B,kBAAoB9V,EAAO8V,qB,kDAIhC,IAAIC,EAAQ,IAAIluB,KACZmuB,EAAgB,IAAInuB,KAGxB,OAFAmuB,EAAcC,QAAQF,EAAMpR,UAAY,GAEjCqR,I,gCA1GP,OAAO/6B,KAAKi7B,Y,aAGK/V,GACjBllB,KAAKi7B,WAAa/V,EACdA,IACAllB,KAAKk7B,eAAiB,IAAItuB,KAAKsY,M,oCAKnC,OAAOllB,KAAKk7B,gB,aAGSjB,GACrBj6B,KAAKk7B,eAAiBjB,EACtBj6B,KAAKi7B,WAAa,IAAOhB,GAAejuB,OAAO,gB,8BAI/C,OAAOhM,KAAKm7B,U,aAGGhW,GACfnlB,KAAKm7B,SAAWhW,EACZA,IACAnlB,KAAKo7B,aAAe,IAAIxuB,KAAKuY,M,kCAKjC,OAAOnlB,KAAKo7B,c,aAGOC,GACnBr7B,KAAKo7B,aAAeC,EACpBr7B,KAAKm7B,SAAW,IAAOE,GAAarvB,OAAO,gB,oCAI3C,OAAOhM,KAAK+5B,gB,aAGSM,GACrBr6B,KAAK+5B,eAAiBM,GAClBA,aAAa,EAAbA,EAAen5B,UACflB,KAAKg6B,mBAAqBK,EAAcl6B,KAAI,SAAA0oB,GAAC,OAAI,IAAIjc,KAAJ,UAAYic,GAAZ,OAAgBA,EAAEkQ,SAAS,KAAO,GAAK,Y,wCAK5F,OAAO/4B,KAAKg6B,oB,aAGasB,GACzBt7B,KAAKg6B,mBAAqBsB,GACtBA,aAAiB,EAAjBA,EAAmBp6B,UACnBlB,KAAK+5B,eAAiBuB,EAAkBn7B,KAAI,SAAA0oB,GAAC,OAAI,IAAOA,GAAG7c,OAAO,oB,sCAKtE,OAAOhM,KAAKk6B,sB,moBClGpB,IAAqBqB,EAArB,WAGI,WAAY15B,I,4FAAsB,SAC9B7B,KAAK6B,WAAaA,E,UAJ1B,W,EAAA,G,EAAA,kLAQoC7B,KAAK6B,WAAWE,IAAI,qBARxD,cAQYy5B,EARZ,yBASeA,GATf,qRAagD,QADbA,EAZnC,+BAYuE,MAZvE,gCAa8Dx7B,KAAKy7B,qBAbnE,8CAa0FD,EAb1F,cAaYE,EAbZ,uBAeeA,EAAav7B,KAAI,SAAAw7B,GAAE,MAAK,CAC3BxzB,MAAOwzB,EAAG35B,GACVzB,MAAOo7B,EAAG35B,QAjBtB,iG,2BAAA,KAAqBu5B,EAAqB,aADzC,I,iCAI2B,OAHPA,GAAA,Q,+TCCrB,IAAqBK,EAArB,WACI,WAAoB/5B,I,4FAAsB,SAAtB,KAAAA,a,UADxB,O,EAAA,G,EAAA,uCAGoBg6B,EAAoB5wB,EAAe0H,GAC/C,IAAI5H,EAAkB8wB,EAElB5wB,IAAMF,EAAgBE,KAAOA,GAE7B0H,IAAc5H,EAAgB4H,aAAeA,GAEjD,IAAIzQ,EAAQ,YAAiB6I,GAAiB,GAE9C,OAAO/K,KAAK6B,WAAWE,IAAhB,uCAAoDG,EAAQ,IAAH,OAAOA,GAAU,OAZzF,qCAemBF,GACX,OAAOhC,KAAK6B,WAAWE,IAAhB,wCAAqDC,MAhBpE,yCAmBuBC,GACf,IAAIC,EAAQD,EAAI9B,KAAI,SAAC6B,GAAD,mBAAcA,MAAMG,KAAK,KAC7C,OAAOnC,KAAK6B,WAAWO,OAAhB,wCAAwDF,MArBvE,2CAwByBD,EAAeqwB,GAChC,OAAOtyB,KAAK6B,WAAWS,IAAI,yCAA0C,CAAEL,MAAKqwB,qBAzBpF,2CA4ByB5kB,EAAiBouB,GAClC,IAAI55B,EAAQ,YACR,CAEIe,eAAgByK,EAChBouB,eAAgBA,IAEpB,GAEJ,OAAO97B,KAAK6B,WAAWE,IAAhB,8CACoCG,EAAQ,IAAH,OAAOA,GAAU,OAtCzE,sCA0CoB65B,GACZ,OAAKA,EAAY/5B,GAGVhC,KAAK6B,WAAWS,IAAhB,wCAAqDy5B,EAAY/5B,IAAM+5B,GAFnE/7B,KAAK6B,WAAWU,KAAK,gCAAiCw5B,KA5CzE,+CAkDQ,MAAO,CACH,CAAE/5B,GAAI,EAAG6a,KAAM,aAAcvc,KAAM,eACnC,CAAE0B,GAAI,EAAG6a,KAAM,aAAcvc,KAAM,eACnC,CAAE0B,GAAI,EAAG6a,KAAM,YAAavc,KAAM,aAClC,CAAE0B,GAAI,EAAG6a,KAAM,WAAYvc,KAAM,YACjC,CAAE0B,GAAI,EAAG6a,KAAM,WAAYvc,KAAM,eAvD7C,0CA2DwB07B,EAAwBC,GACxC,IAAKD,EAAuBE,cACxB,KAAM,oDAEV,IAAM52B,EAAW,IAAIC,SAMrB,OALAD,EAASG,OAAO,gBAAiBu2B,EAAuBE,eACxD52B,EAASG,OAAO,oBAAqBu2B,EAAuBG,mBAExDF,GAAiB32B,EAASG,OAAO,OAAQw2B,GAEtCj8B,KAAK6B,WACP6D,cADE,wCAEkCs2B,EAAuBE,cAFzD,WAIFE,SACAx2B,YAAYN,GACZQ,SA3Eb,4CA8E0B9D,EAAIq6B,GACtB,OAAOr8B,KAAK6B,WAAWO,OAAhB,wCAC8BJ,EAD9B,kBAC0Cq6B,MAhFzD,kDAoFgCr6B,GACxB,OAAOhC,KAAK6B,WAAWE,IAAhB,wCAAqDC,EAArD,sBArFf,0CAwFwBgJ,GAChB,OAAOhL,KAAK6B,WAAWE,IAAhB,2BAAwCiJ,EAAxC,kB,2BAzFf,KAAqB4wB,EAAkB,aADtC,I,iCAEmC,OADfA,GAAA,O,4xCCEd,IAAMU,EAAb,YAMI,0B,4FAAA,UACI,2BACKC,eAAiB,IAAcC,IAFxC,E,UANJ,O,kOAAA,M,EAAA,G,EAAA,+BAwBQx8B,KAAKu8B,eAAiB,IAAcC,MAxB5C,uCA4BQ,MAAO,CACHC,cAAez8B,KAAKu8B,kBA7BhC,sCAiCoB/7B,GACZ,0DAA6BA,EAAQR,QAlC7C,oCAYQ,OAAOA,KAAKu8B,gBAZpB,aAe6BG,GACrB18B,KAAKu8B,eAAiBG,GAAmB,IAAcF,MAhB/D,4BAoBQ,OAAOxrB,SAAShR,KAAKu8B,gBAAkBv8B,KAAKu8B,iBAAmB,IAAcC,U,2BApBrF,GACY,M,kCCRZ,IAAKG,EASC,SAAUC,IACZ,MAAO,CACH,CAAEr8B,MAAOo8B,EAAUE,cAAe10B,MAAO,iBACzC,CAAE5H,MAAOo8B,EAAUG,IAAK30B,MAAO,OAC/B,CAAE5H,MAAOo8B,EAAUI,OAAQ50B,MAAO,UAClC,CAAE5H,MAAOo8B,EAAUK,KAAM70B,MAAO,SAdxC,2CAAKw0B,GACD,+BACA,YACA,kBACA,cAJJ,CAAKA,MAAS,KAOC,O,kCCPf,sCAAMM,EAAmB,SAACz8B,EAAgC08B,GACtD,IAAMC,EAAoB38B,EAAOy2B,IAAImG,uBACrC,GAA0B,IAAtBD,EAAJ,CAGID,EAAWC,IACXD,EAAW,GAGf,IAAMG,EAAuC,IAAtBF,EAA0B,EAAID,EAErDpP,YAAW,W,MACDwP,EAAuB98B,EAAOy2B,IAAIsG,uBAAuBF,GAC/DC,EAAqBE,aAAY,IAEU,QAAvC,EAAAF,EAAqB/W,0BAAkB,eAAErlB,QAAS,GAClDo8B,EAAqB/W,mBAAmB,GAAG3d,OAE3C00B,EAAqB/W,mBAAmB,GAAGiX,aAAY,KAE5D,M,4pDCdA,IAAMC,EAAb,YAKI,0B,4FAAA,UACI,2BACKC,0BAA4B,IAAI,IAFzC,E,UALJ,O,kOAAA,M,EAAA,G,EAAA,+BAWQ19B,KAAK09B,0BAA0Bz2B,UAXvC,uCAmBQ,O,+VAAA,IACOjH,KAAK09B,0BAA0B1rB,iBADtC,CAEI2rB,UAAWxgB,KAAKmc,OAAO,IAAI1sB,MAAQgxB,UAAY,SArB3D,sCAyBoBp9B,GACZ,0DAA6BA,EAAQR,QA1B7C,4BAeQ,OAAOA,KAAK09B,0BAA0BrqB,W,2BAf9C,GAAkE,M,kCCJ5D,SAAUwqB,IACZ,MAAO,CACHC,YAAY,EACZC,OAAQ,GACRC,WAAY,QACZ3a,OAAQ,EACR4a,cAAe,KANvB,mC,gwCCMO,IAAMC,EAAb,YAMI,0B,4FAAA,UACI,2BAEKC,YAAc,GACnB,EAAKC,mBAAqB,MAJ9B,E,UANJ,O,kOAAA,M,EAAA,G,EAAA,+BAuDQp+B,KAAKm+B,YAAc,GACnBn+B,KAAKo+B,mBAAqB,QAxDlC,uCA4DQ,MAAO,CACHzyB,OAAQ3L,KAAK2L,OACb8G,QAASzS,KAAKyS,WA9D1B,sCAkEoBjS,GACPA,IAMDA,EAAOqC,QACPrC,EAAOmL,OAAS9D,MAAMsL,QAAQ3S,EAAOqC,OAASrC,EAAOqC,MAAQ,CAACrC,EAAOqC,QAErErC,EAAOgS,SACPhS,EAAOiS,QAAU5K,MAAMsL,QAAQ3S,EAAOgS,QAAUhS,EAAOgS,OAAS,CAAChS,EAAOgS,SAG5E,0DAA6BhS,EAAQR,SAhF7C,wCAgBQ,OAAOA,KAAKo+B,oBAhBpB,aAmBiCC,GACzBr+B,KAAKo+B,mBAAqBC,EAC1Br+B,KAAKm+B,YAAc,KArB3B,6BAyBQ,MAAmC,QAA5Bn+B,KAAKo+B,mBAA+Bp+B,KAAKm+B,YAAc,IAzBtE,aA4BsBl8B,GACdjC,KAAKo+B,mBAAqB,MAC1Bp+B,KAAKm+B,YAAcl8B,GAAO,KA9BlC,8BAkCQ,MAAmC,SAA5BjC,KAAKo+B,mBAAgCp+B,KAAKm+B,YAAc,IAlCvE,aAqCuBl8B,GACfjC,KAAKo+B,mBAAqB,OAC1Bp+B,KAAKm+B,YAAcl8B,GAAO,KAvClC,iCA2CQ,OAAOjC,KAAKm+B,aA3CpB,aA8C0Bl8B,GAClBjC,KAAKm+B,YAAcl8B,GAAO,KA/ClC,4BAmDQ,OAAQ+O,SAAShR,KAAKm+B,YAAYj9B,a,2BAnD1C,G,UAAwC,I,kCCVxC,IAAKo9B,GAAL,SAAKA,GACD,2BACA,yBACA,qBACA,mBACA,iBALJ,CAAKA,MAA8B,KAQpB,O,0QCLMC,E,0LACIn+B,EAAc+vB,GAC/B,GAAU,OAAN/vB,EACA,OAAQ,EAEZ,GAAU,OAAN+vB,EACA,OAAO,EAEX,IAAI3T,EAA4B,cAKhC,OAHaA,EAAQgiB,WAAU,SAAAtjB,GAAC,OAAIA,EAAE3a,QAAUH,KACnCoc,EAAQgiB,WAAU,SAAAtjB,GAAC,OAAIA,EAAE3a,QAAU4vB,S,+DCdxD,IAAIhwB,EAAM,CACT,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,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","file":"app.e9f0cb8d3d8277b592f9.chunk.js","sourcesContent":["import Attribute from 'location-testing/attribute';\r\nimport { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface MapAttributesQuery {\r\n mapAttributes: any;\r\n}\r\n\r\nexport class MapAttributesQueryFilters extends BaseQueryFilter\r\n implements QueryFiltered {\r\n\r\n private _key = 'mapAttributes';\r\n mapAttributes: Attribute[];\r\n\r\n constructor() {\r\n super();\r\n\r\n this.mapAttributes = [];\r\n }\r\n\r\n public get count(): number {\r\n return this.mapAttributes.length;\r\n }\r\n\r\n reset(): void {\r\n this.mapAttributes = [];\r\n }\r\n\r\n getQueryParams(): MapAttributesQuery {\r\n return Object.assign(\r\n {},\r\n ...this.mapAttributes.map((a: Attribute, i: number) => ({ [`${this._key}[${i}].name`]: a.name })),\r\n ...this.mapAttributes.map((a: Attribute, i: number) => ({ [`${this._key}[${i}].value`]: a.value })),\r\n );\r\n }\r\n\r\n setFilterValues(params: any): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const regexNameKey = /mapAttributes\\[[0-9]+\\].name/gm;\r\n const regexValueKey = /mapAttributes\\[[0-9]+\\].value/gm;\r\n const fooParams = Object.entries(params).map(([k]) => k);\r\n const nameGroups = fooParams.filter(p => regexNameKey.test(p));\r\n const valueGroups = fooParams.filter(p => regexValueKey.test(p));\r\n if (nameGroups.length !== valueGroups.length) {\r\n throw new Error('The map attribute name and value params do not match.');\r\n }\r\n\r\n nameGroups.forEach((k: string) => {\r\n const valueKey = k.substring(0, k.indexOf('.')) + '.value';\r\n this.mapAttributes.push({\r\n name: params[k], value: params[valueKey]\r\n });\r\n })\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class FaqGroupService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getFaqGroups(includeFaqs) {\r\n return this.httpClient.get(`help/faq-groups/?includeFaqs=${!!includeFaqs}`);\r\n }\r\n\r\n getFaqGroup(id) {\r\n return this.httpClient.get(`help/faq-groups/${id}`);\r\n }\r\n\r\n deleteFaqGroups(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`help/faq-groups?${query}`);\r\n }\r\n\r\n saveFaqGroup(faqGroup) {\r\n if (!faqGroup.id)\r\n return this.httpClient.post('help/faq-groups/', faqGroup);\r\n\r\n return this.httpClient.put(`help/faq-groups/${faqGroup.id}`, faqGroup);\r\n }\r\n\r\n updateFaqGroupOrdinals(idOrdinalMap) {\r\n return this.httpClient.patch(`help/faq-groups/`, idOrdinalMap);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport { StatusQuery } from 'status/status-query-filters';\r\nimport TestFilters from './test-filters';\r\nimport TestResultSummary from './test-result-summary';\r\n\r\n@autoinject\r\nexport default class RequestService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n getTestResultCounts(statusQuery: StatusQuery): Promise {\r\n var query = buildQueryString(statusQuery, true);\r\n\r\n return this.httpClient.get(\r\n `tests/all/result-counts/${query ? `?${query}` : ''}`,\r\n ) as any as Promise;\r\n }\r\n\r\n getTestResultSummaries(filters: TestFilters): Promise {\r\n var query = buildQueryString(filters, true);\r\n return this.httpClient.get(`tests?${query}`) as any as Promise;\r\n }\r\n\r\n fetchConfirmationTestResultValues(mapId: number, testMethodGroup: string): Promise {\r\n var query = buildQueryString({ mapId, testMethodGroup });\r\n\r\n return this.httpClient.get(`tests/confirmation-values?${query}`) as unknown as Promise<\r\n string[]\r\n >;\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\n\r\n@inject(HttpClient)\r\nexport default class PointTypeService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getPointTypes(filters) {\r\n var query = buildQueryString(filters);\r\n return this.httpClient.get(`location-testing/point-types${(query ? `?${query}` : '')}`);\r\n }\r\n\r\n getOrganizationPointTypes(organizationId) {\r\n return this.httpClient.get(`location-testing/point-types/organization/${organizationId}`);\r\n }\r\n}\r\n","enum PlanCoverageType {\r\n Collected = 'Collected',\r\n Scheduled = 'Scheduled',\r\n CollectedAndScheduled = 'CollectedAndScheduled',\r\n Unused = 'Unused',\r\n}\r\n\r\nexport const planCoverageTypes: Record = {\r\n Collected: PlanCoverageType.Collected,\r\n Scheduled: PlanCoverageType.Scheduled,\r\n CollectedAndScheduled: 'Collected and Scheduled',\r\n Unused: PlanCoverageType.Unused,\r\n};\r\n\r\nexport function toPlanCoverageType(planCoverageTitle: string): PlanCoverageType {\r\n return planCoverageTitle !== 'Collected and Scheduled' \r\n ? PlanCoverageType[planCoverageTitle] \r\n : PlanCoverageType.CollectedAndScheduled;\r\n}\r\n\r\n","import { computedFrom } from 'aurelia-framework';\r\nimport DataGridSelectAllItem from './data-grid-select-all-item';\r\n\r\n/*\r\n* NOTE: The values you pass into _filterKeys\r\n* do not currently support TS get() (TODO).\r\n* Map your filter keys to the underlying field name.\r\n* e.g. use '_name' for 'name' when name is 'public get name()'\r\n*/\r\nexport default class DataGridSelectAll {\r\n private _allSelected: boolean;\r\n private _dataGridItems: DataGridSelectAllItem[];\r\n private _canDeleteItems: boolean;\r\n private _selectedDataGridItems: DataGridSelectAllItem[];\r\n private _filteredDataGridItems: DataGridSelectAllItem[];\r\n private _filterKeys: string[];\r\n\r\n constructor(\r\n dataGridItems: DataGridSelectAllItem[],\r\n filterKeys: string[]\r\n ) {\r\n this._dataGridItems = dataGridItems;\r\n this._allSelected = false;\r\n this._canDeleteItems = false;\r\n this._selectedDataGridItems = [];\r\n this._filterKeys = filterKeys;\r\n this._filteredDataGridItems = this._dataGridItems;\r\n }\r\n\r\n @computedFrom('_allSelected')\r\n public get allSelected() {\r\n return this._allSelected;\r\n }\r\n\r\n public set allSelected(selected: boolean) {\r\n this._allSelected = selected;\r\n if (this._allSelected) {\r\n this._dataGridItems.forEach((dgi: DataGridSelectAllItem) => dgi.isSelected = true);\r\n this._selectedDataGridItems = this._dataGridItems;\r\n\r\n } else {\r\n this._dataGridItems.forEach((dgi: DataGridSelectAllItem) => dgi.isSelected = false);\r\n this._selectedDataGridItems = [];\r\n }\r\n\r\n this._canDeleteItems = this._selectedDataGridItems.length &&\r\n this._selectedDataGridItems.every(i => i.isActive);\r\n }\r\n\r\n @computedFrom('_canDeleteItems')\r\n public get canDeleteItems() {\r\n return this._canDeleteItems;\r\n }\r\n\r\n public get filteredDataGridItems() {\r\n return this._filteredDataGridItems;\r\n }\r\n\r\n public get dataGridItems() {\r\n return this._dataGridItems;\r\n }\r\n\r\n public set dataGridItems(items: DataGridSelectAllItem[]) {\r\n this._dataGridItems = items;\r\n this._filteredDataGridItems = this._dataGridItems;\r\n }\r\n\r\n public get selectedDataGridItems() {\r\n return this._selectedDataGridItems;\r\n }\r\n\r\n isSelectedChanged() {\r\n this._allSelected = this._dataGridItems.every(i => i.isSelected);\r\n this._selectedDataGridItems = this._dataGridItems\r\n .filter((dgi: DataGridSelectAllItem) => dgi.isSelected && dgi.isActive);\r\n this._canDeleteItems = this._selectedDataGridItems.length &&\r\n this._selectedDataGridItems.every(i => i.isActive);\r\n }\r\n\r\n filterDataGridItems(filterText: string) {\r\n if (!filterText || filterText.length === 0 || this._filterKeys.length === 0) {\r\n this._filteredDataGridItems = this._dataGridItems;\r\n return;\r\n }\r\n\r\n const filteredItems = this._dataGridItems.filter((i) => {\r\n return Object.keys(i).reduce((acc, curr) => {\r\n if (this._filterKeys.includes(curr)) {\r\n return acc || i[curr].toLowerCase().includes(filterText.toLowerCase());\r\n }\r\n });\r\n });\r\n\r\n this._filteredDataGridItems = filteredItems;\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class UploadedFileService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n async uploadFiles(path, files, reportProgress) {\r\n var fileUrls = [];\r\n var formData = new FormData();\r\n\r\n for (let file of files) {\r\n formData.append('files', file);\r\n fileUrls.push(`${path}/${file.name}`);\r\n }\r\n\r\n await this\r\n .httpClient\r\n .createRequest(path)\r\n .asPut()\r\n .withContent(formData)\r\n .withProgressCallback(reportProgress)\r\n .send();\r\n \r\n return fileUrls;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { buildQueryString } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport TestMethod from 'test-methods/test-method';\r\nimport Logger from '../../infrastructure/logger';\r\nimport CapPlanFilters from './cap-plan-filters';\r\nimport CapPlan from './contracts/cap-plan';\r\nimport { CapPlanListItem } from './contracts/cap-plan-list-item';\r\nimport { RelatedCapPlan } from './contracts/related-cap-plan';\r\n\r\n@autoinject\r\nexport default class CapPlanService {\r\n constructor(private httpClient: HttpClient, private logger: Logger) {\r\n this.httpClient = httpClient;\r\n this.logger = logger;\r\n }\r\n\r\n getCapPlans(capPlanFilters: CapPlanFilters): Promise {\r\n const query = buildQueryString(capPlanFilters, true);\r\n\r\n return this.httpClient.get(\r\n `location-testing/cap-plans${query ? `?${query}` : ''}`,\r\n ) as any as Promise;\r\n }\r\n\r\n getCapPlan(tenantId: number, id: number): Promise {\r\n return this.httpClient.get(\r\n `tenant/${tenantId}/location-testing/cap-plans/${id}`,\r\n ) as any as Promise;\r\n }\r\n\r\n getTestMethods(): Promise {\r\n return this.httpClient.get('location-testing/cap-plans/all/test-methods') as any as Promise<\r\n TestMethod[]\r\n >;\r\n }\r\n\r\n getRelatedCapPlans(\r\n tenantId: number,\r\n testMethodIds: number[],\r\n capPlanId: number,\r\n ): Promise {\r\n const queryString = buildQueryString({ testMethodId: testMethodIds }, true);\r\n\r\n return this.httpClient.get(\r\n `tenant/${tenantId}/location-testing/cap-plans/${capPlanId}/related${\r\n queryString.length ? '?' + queryString : ''\r\n }`,\r\n ) as any as Promise;\r\n }\r\n\r\n bulkDeleteCapPlans(ids: number[]) {\r\n return this.httpClient.post('location-testing/cap-plans/bulk-delete', { ids });\r\n }\r\n\r\n createCapPlan(tenantId: number, capPlan: CapPlan): Promise {\r\n return this.httpClient.post(\r\n `tenant/${tenantId}/location-testing/cap-plans`,\r\n capPlan,\r\n ) as any as Promise;\r\n }\r\n\r\n updateCapPlan(tenantId: number, capPlan: CapPlan): Promise {\r\n return this.httpClient.put(\r\n `tenant/${tenantId}/location-testing/cap-plans/${capPlan.id}`,\r\n capPlan,\r\n ) as any as Promise;\r\n }\r\n\r\n getCapPlanRecordChanges(tenantId: number, id: number) {\r\n return this.httpClient.get(\r\n `tenant/${tenantId}/location-testing/cap-plans/${id}/record-changes`,\r\n );\r\n }\r\n}\r\n","import { autoinject, transient } from 'aurelia-framework';\r\nimport { Guid } from 'guid-typescript';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport Point from './points/point';\r\nimport PointAttribute from './points/point-attribute';\r\nimport PointService from './points/point-service';\r\n\r\ninterface PointAttributeOptions {\r\n id: Guid;\r\n nameOptions: SelectorOption[];\r\n valueOptions: SelectorOption[];\r\n selectedValues: string[];\r\n}\r\n\r\n@transient()\r\n@autoinject\r\nexport default class PointSelectorFilter {\r\n name: string;\r\n description: string;\r\n selectedRooms: string[];\r\n selectedZones: number[];\r\n selectedMobileValues: boolean[];\r\n selectedPausedValues: boolean[];\r\n selectedTypes: string[];\r\n selectedRisks: string[];\r\n selectedAttributes: PointAttribute[]; // these also have the properties defined in the PointAttributeOptions interface grafted in\r\n\r\n filterCount: number;\r\n \r\n roomOptions: SelectorOption[];\r\n zoneOptions: SelectorOption[];\r\n mobileOptions: SelectorOption[];\r\n pauseOptions: SelectorOption[];\r\n typeOptions: SelectorOption[];\r\n riskOptions: SelectorOption[];\r\n attributeNameOptions: SelectorOption[];\r\n\r\n constructor(\r\n private pointService: PointService\r\n ) {\r\n this.roomOptions = [];\r\n this.zoneOptions = [];\r\n this.mobileOptions = [];\r\n this.pauseOptions = [];\r\n this.typeOptions = [];\r\n this.riskOptions = [];\r\n\r\n this.attributeNameOptions = [];\r\n\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.name = '';\r\n this.description = '';\r\n \r\n this.selectedRooms = [];\r\n this.selectedZones = [];\r\n this.selectedMobileValues = [];\r\n this.selectedPausedValues = [];\r\n this.selectedTypes = [];\r\n this.selectedRisks = [];\r\n this.selectedAttributes = [];\r\n\r\n this.filterCount = 0;\r\n }\r\n\r\n setupFilterOptions(points: Point[], pointAttributes: PointAttribute[] = []) {\r\n this.roomOptions = Array.from(new Set((points?.filter(p => p.room !== null) ?? [])\r\n .map(p => p.room)).values())\r\n .map(v => ({ title: v, value: v })) as SelectorOption[];\r\n this.zoneOptions = Array.from(new Set((points ?? []).map(p => p.zone)).values()).map(v => ({ title: v.toString(), value: v })) as SelectorOption[];\r\n this.mobileOptions = [{ title: 'Yes', value: true }, { title: 'No', value: false }] as unknown[] as SelectorOption[];\r\n this.pauseOptions = [{ title: 'Yes', value: true }, { title: 'No', value: false }] as unknown[] as SelectorOption[];\r\n this.typeOptions = Array.from(new Set((points ?? []).filter(p => !!p.type).map(p => p.type)).values()).map(v => ({ title: v, value: v })) as SelectorOption[];\r\n this.riskOptions = Array.from(new Set((points ?? []).map(p => p.risk)).values()).map(v => ({ title: this.pointService.getRiskCaption(v), value: v })) as SelectorOption[];\r\n\r\n // determine list of in-use values for each attribute name\r\n let pointAttributeValuesMap = new Map();\r\n pointAttributes.forEach(a => {\r\n if (pointAttributeValuesMap.has(a.name)) {\r\n let group = pointAttributeValuesMap.get(a.name) as string[];\r\n if (!group.some(s => s === a.value))\r\n group.push(a.value);\r\n } else\r\n pointAttributeValuesMap.set(a.name, [a.value]);\r\n });\r\n\r\n // determine unique list of in-use attribute names\r\n let pointAttributeNames = pointAttributes.reduce((attributes, attribute) => {\r\n if (!attributes.some(a => a.name.toLowerCase() === attribute.name.toLowerCase()))\r\n attributes.push({ name: attribute.name, value: attribute.name });\r\n\r\n return attributes;\r\n }, []);\r\n\r\n // create the corresponding options for attribute names and values\r\n this.attributeNameOptions = pointAttributeNames.map(a => ({ title: a.name, value: a.value })) as SelectorOption[];\r\n this.attributeNameOptions.forEach(attributeNameOption => {\r\n let attributeValues = (pointAttributeValuesMap.get(attributeNameOption.value) ?? []) as string[];\r\n \r\n let pointAttribute = attributeNameOption as any;\r\n pointAttribute.valueOptions = attributeValues.map(v => ({ title: v, value: v})) as SelectorOption[];\r\n });\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n applyFilters(points: Point[], attributeFiltersApplied: boolean): Point[] {\r\n if (!points)\r\n return [];\r\n\r\n // NOTE: point attribute filters are not performed client-side\r\n this.filterCount =\r\n ((this.name ?? '').length > 0 ? 1 : 0) +\r\n ((this.description ?? '').length > 0 ? 1 : 0) +\r\n ((this.selectedRooms?.length ?? 0) > 0 ? 1 : 0) +\r\n ((this.selectedZones?.length ?? 0) > 0 ? 1 : 0) +\r\n ((this.selectedMobileValues?.length ?? 0) > 0 ? 1 : 0) + \r\n ((this.selectedPausedValues?.length ?? 0) > 0 ? 1 : 0) +\r\n ((this.selectedTypes?.length ?? 0) > 0 ? 1 : 0) +\r\n ((this.selectedRisks?.length ?? 0) > 0 ? 1 : 0) +\r\n (attributeFiltersApplied ? 1 : 0);\r\n\r\n return points.filter(p =>\r\n p.name.toLowerCase().indexOf((this.name ?? '').toLowerCase()) !== -1 &&\r\n (p.description ?? '').toLowerCase().indexOf((this.description ?? '').toLowerCase()) !== -1 &&\r\n ((this.selectedRooms?.length ?? 0) === 0 || this.selectedRooms.some(v => v.toLowerCase() === (p.room ?? '').toLowerCase())) &&\r\n ((this.selectedZones?.length ?? 0) === 0 || this.selectedZones.some(v => v === p.zone)) &&\r\n ((this.selectedMobileValues?.length ?? 0) === 0 || this.selectedMobileValues.some(v => v === p.mobile)) &&\r\n ((this.selectedPausedValues?.length ?? 0) === 0 || this.selectedPausedValues.some(v => v === p.isPausedPendingRemediation)) &&\r\n ((this.selectedTypes?.length ?? 0) === 0 || this.selectedTypes.some(v => v.toLowerCase() === (p.type ?? '').toLowerCase())) &&\r\n ((this.selectedRisks?.length ?? 0) === 0 || this.selectedRisks.some(v => v === p.risk))\r\n );\r\n }\r\n\r\n getAttributeValueSelectorOptions(attributeName: string): SelectorOption[] {\r\n let matchingAttributes = this.attributeNameOptions.filter(o => o.value === attributeName);\r\n if (matchingAttributes.length > 0) {\r\n let attribute = matchingAttributes[0] as any;\r\n return attribute.valueOptions as SelectorOption[];\r\n }\r\n \r\n return [];\r\n }\r\n\r\n convertPointAttributeSelectionsToPointAttributes(): PointAttribute[] {\r\n let selectedAttributes = this.selectedAttributes.filter(selectedAttribute => selectedAttribute.name?.length > 0) as (PointAttribute & PointAttributeOptions)[];\r\n selectedAttributes = selectedAttributes.filter(selectedAttribute => selectedAttribute.selectedValues?.length > 0);\r\n\r\n let pointAttributes = [];\r\n selectedAttributes.forEach(selectedAttribute => {\r\n selectedAttribute.selectedValues.forEach(selectedValue => {\r\n pointAttributes.push({name: selectedAttribute.name, value: selectedValue });\r\n });\r\n })\r\n\r\n return pointAttributes as PointAttribute[];\r\n }\r\n\r\n addPointAttributeFilter() {\r\n // determine attribute name options not in use\r\n let attributeNamesInUse = this.selectedAttributes.map(a => a.name);\r\n let attributeNameOptions = this.attributeNameOptions;\r\n attributeNameOptions.forEach(o => {\r\n o.disabled = attributeNamesInUse.includes( (o.value) as string);\r\n });\r\n\r\n // graft in properties used for filtering\r\n let pointAttribute = {\r\n id: Guid.create(),\r\n nameOptions: attributeNameOptions,\r\n valueOptions: null, // this is determined after a selection is made\r\n selectedValues: null\r\n } as PointAttributeOptions;\r\n\r\n this.selectedAttributes.push(pointAttribute as unknown as PointAttribute);\r\n }\r\n\r\n informAttributeNameInUse(attribute: PointAttribute, attributeName: string) {\r\n attribute.name = attributeName;\r\n\r\n // get the set of attribute names now in use and consider new one\r\n let attributeNamesInUse = this.selectedAttributes.map(a => a.name);\r\n attributeNamesInUse.push(attributeName);\r\n\r\n let pointAttributeOption = attribute as PointAttribute &PointAttributeOptions;\r\n pointAttributeOption.selectedValues = null;\r\n pointAttributeOption.valueOptions = this.getAttributeValueSelectorOptions(pointAttributeOption.name);\r\n\r\n // exclude this option as choice for the other attributes\r\n let otherSelectedAttributes = (this.selectedAttributes as (PointAttribute & PointAttributeOptions)[]).filter(a => a.id !== pointAttributeOption.id);\r\n otherSelectedAttributes.forEach(selectedAttribute => {\r\n let pointAttributeNameOptions = selectedAttribute.nameOptions as SelectorOption[];\r\n\r\n let option = pointAttributeNameOptions.find(o => (o.value as string) === attributeName);\r\n if (option)\r\n option.disabled = true;\r\n });\r\n }\r\n\r\n informAttributeNameNoLongerInUse(index: number) {\r\n let pointAttributeOption = this.selectedAttributes[index] as PointAttribute & PointAttributeOptions;\r\n\r\n // get the attribute name option that we are adding back\r\n let attributeName = pointAttributeOption.name;\r\n\r\n let otherSelectedAttributes = this.selectedAttributes as (PointAttribute & PointAttributeOptions)[];\r\n otherSelectedAttributes.forEach(selectedAttribute => {\r\n let attributeNameOptions = selectedAttribute.nameOptions as SelectorOption[];\r\n let option = attributeNameOptions.find(o => (o.value as string) === attributeName);\r\n if (option)\r\n option.disabled = false;\r\n });\r\n\r\n this.selectedAttributes.splice(index, 1)\r\n }\r\n}\r\n","export default class SegmentType {\r\n static Unknown = new SegmentType('Unknown');\r\n static Text = new SegmentType('Text');\r\n static Selection = new SegmentType('Selection');\r\n\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n toString() {\r\n return this.name;\r\n }\r\n\r\n static getOptions() {\r\n return [\r\n { title: 'Text', value: SegmentType.Text.name },\r\n { title: 'Selection', value: SegmentType.Selection.name },\r\n ];\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport TestMethod from 'test-methods/test-method';\r\nimport OrganizationPlan from './organization-plan';\r\nimport PlanCoverage from './plan-coverage';\r\nimport PlanType from './plan-type';\r\n\r\n@autoinject\r\nexport default class PlanService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getPlans(mapId: number[]) {\r\n let queryParameters = {\r\n mapId: mapId,\r\n };\r\n\r\n var query = buildQueryString(queryParameters, true);\r\n\r\n return this.httpClient.get(`location-testing/plans${query ? `?${query}` : ''}`);\r\n }\r\n\r\n getOrganizationPlans(organizationId: number): Promise {\r\n return this.httpClient.get(\r\n `location-testing/plans/organization/${organizationId}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getPlansByPoint(pointId, view) {\r\n return this.httpClient.get(`location-testing/plans?pointId=${pointId}&view=${view}`);\r\n }\r\n\r\n getPlanTypes() {\r\n let planTypes = [\r\n { id: PlanType.DISCRETIONARY, token: 'Discretionary' },\r\n { id: PlanType.SCHEDULED, token: 'Scheduled' },\r\n { id: PlanType.RISK_BASED_PRIORITY, token: 'Risk Based Priority' },\r\n { id: PlanType.ADHOC, token: 'Adhoc' },\r\n ];\r\n return Promise.resolve(planTypes);\r\n }\r\n\r\n getPlan(id): Promise {\r\n return this.httpClient.get(`location-testing/plans/${id}`);\r\n }\r\n\r\n deletePlans(ids) {\r\n var query = ids.map((id) => `id=${id}`).join('&');\r\n return this.httpClient.delete(`location-testing/plans?${query}`);\r\n }\r\n\r\n savePlan(plan) {\r\n if (!plan.id) return this.httpClient.post('location-testing/plans', plan);\r\n\r\n return this.httpClient.put(`location-testing/plans/${plan.id}`, plan);\r\n }\r\n\r\n getPlanRecordChanges(id) {\r\n return this.httpClient.get(`location-testing/plans/${id}/record-changes`);\r\n }\r\n\r\n getTestMethods(mapIds: number[]): TestMethod[] {\r\n let queryParameters = {\r\n mapIds: mapIds,\r\n };\r\n\r\n var query = buildQueryString(queryParameters, true);\r\n\r\n return this.httpClient.get(\r\n `location-testing/plans/all/test-methods${query ? `?${query}` : ''}`,\r\n ) as unknown as TestMethod[];\r\n }\r\n\r\n getPlanCoverage(\r\n id: number,\r\n taskTargetDateTimeStart: string,\r\n taskTargetDateTimeEnd: string,\r\n ): Promise {\r\n const params = {\r\n taskTargetDateTimeStart,\r\n taskTargetDateTimeEnd,\r\n };\r\n const query = buildQueryString(params);\r\n\r\n return this.httpClient.get(\r\n `location-testing/plans/${id}/coverage?${query}`,\r\n ) as unknown as Promise;\r\n }\r\n exportPlanCoveragePoints(\r\n id: number,\r\n coverageType: string,\r\n taskTargetDateTimeStart: string,\r\n taskTargetDateTimeEnd: string,\r\n ): string {\r\n const queryParams = {\r\n coverageType,\r\n taskTargetDateTimeStart,\r\n taskTargetDateTimeEnd,\r\n format: 'CSV',\r\n };\r\n const queryString = buildQueryString(queryParams, true);\r\n\r\n return `api/location-testing/plans/${id}/points-export?${queryString}`;\r\n }\r\n}\r\n","export enum RemediationUserType {\r\n Assigned = 'Assigned',\r\n Approval = 'Approval'\r\n}\r\n","const compositeOptionsLookup: Record = {\r\n None: 'None',\r\n TwoToThree: '2-3',\r\n FourToFive: '4-5',\r\n GreaterThanFive: '>5',\r\n LcsSample: 'LCS Sample',\r\n EnviroMonitorProgram: 'Enviro Monitor Program',\r\n LabAirPlates: 'Lab Air Plates',\r\n PtSample: 'PT Sample',\r\n LcsQualitative: 'LCS Qualitative',\r\n WaterTableTest: 'Water Table Test',\r\n Training: 'Training',\r\n};\r\n\r\nconst defaultCompositeOptions = [\r\n { title: compositeOptionsLookup.None, value: compositeOptionsLookup.None },\r\n { title: compositeOptionsLookup.TwoToThree, value: compositeOptionsLookup.TwoToThree },\r\n { title: compositeOptionsLookup.FourToFive, value: compositeOptionsLookup.FourToFive },\r\n {\r\n title: compositeOptionsLookup.GreaterThanFive,\r\n value: compositeOptionsLookup.GreaterThanFive,\r\n },\r\n];\r\n\r\nconst internalCompositeOptions = [\r\n { title: compositeOptionsLookup.LcsSample, value: compositeOptionsLookup.LcsSample },\r\n {\r\n title: compositeOptionsLookup.EnviroMonitorProgram,\r\n value: compositeOptionsLookup.EnviroMonitorProgram,\r\n },\r\n { title: compositeOptionsLookup.LabAirPlates, value: compositeOptionsLookup.LabAirPlates },\r\n { title: compositeOptionsLookup.PtSample, value: compositeOptionsLookup.PtSample },\r\n { title: compositeOptionsLookup.LcsQualitative, value: compositeOptionsLookup.LcsQualitative },\r\n { title: compositeOptionsLookup.WaterTableTest, value: compositeOptionsLookup.WaterTableTest },\r\n { title: compositeOptionsLookup.Training, value: compositeOptionsLookup.Training },\r\n];\r\n\r\nconst defaultCompositeOptionsV2 = [\r\n compositeOptionsLookup.None,\r\n compositeOptionsLookup.TwoToThree,\r\n compositeOptionsLookup.FourToFive,\r\n compositeOptionsLookup.GreaterThanFive,\r\n];\r\n\r\nconst internalCompositeOptionsV2 = [\r\n compositeOptionsLookup.LcsSample,\r\n compositeOptionsLookup.EnviroMonitorProgram,\r\n compositeOptionsLookup.LabAirPlates,\r\n compositeOptionsLookup.PtSample,\r\n compositeOptionsLookup.LcsQualitative,\r\n compositeOptionsLookup.WaterTableTest,\r\n compositeOptionsLookup.Training,\r\n];\r\n\r\nexport {\r\n defaultCompositeOptions,\r\n defaultCompositeOptionsV2,\r\n internalCompositeOptions,\r\n internalCompositeOptionsV2,\r\n};\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class LoginAuditService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getLoginAuditData(minDate, maxDate) {\r\n var qs = '';\r\n if(!!minDate)\r\n qs = `minDate=${encodeURIComponent(new Date(minDate).toISOString())}`;\r\n if(!!maxDate)\r\n qs = `${qs}${(!!qs ? '&' : '')}maxDate=${encodeURIComponent(new Date(maxDate).toISOString())}`;\r\n\r\n return this.httpClient.get(`login-audit${(!!qs ? '?' : '')}${qs}`);\r\n }\r\n\r\n getLoginAuditDetail(userId) {\r\n return this.httpClient.get(`login-audit/detail?userId=${userId}`);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport RemediationRootCause from './remediation-root-cause';\r\n\r\n@autoinject\r\nexport default class RemediationRootCauseService {\r\n private baseRoute: string;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'location-testing/remediation-root-causes';\r\n }\r\n\r\n getRemediationRootCauseList(): Promise {\r\n return this.httpClient.get(this.baseRoute) as unknown as Promise;\r\n }\r\n\r\n createRemediationRootCauseList(remediationRootCauseList: RemediationRootCause[]) {\r\n return this.httpClient.put(this.baseRoute, remediationRootCauseList);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\n\r\n@autoinject\r\nexport class TaskRequestSubmissionService {\r\n constructor(\r\n private dialogPresenter: DialogPresenter,\r\n private router: Router,\r\n ) {}\r\n\r\n async submitRequest(tasks: any[]): Promise {\r\n if (!tasks.length) {\r\n return;\r\n }\r\n\r\n if (tasks.some((t) => t.status !== 'Completed')) {\r\n await this.dialogPresenter.showAlert(\r\n 'Some tasks are not completed',\r\n 'Some of the selected tasks have not been completed and therefore cannot be added to a request. Please mark those tasks as Completed or unselect them before submitting a request.',\r\n );\r\n return;\r\n }\r\n\r\n if (tasks.some((t) => t.sampleId)) {\r\n await this.dialogPresenter.showAlert(\r\n 'Some tasks have been submitted',\r\n 'Some of the selected tasks have had their samples submitted and therefore cannot be added to a request. Please unselect them before submitting a request.',\r\n );\r\n return;\r\n }\r\n\r\n const organizationIds = [...new Set(tasks.map((t) => t.organizationId))];\r\n if (organizationIds.length > 1) {\r\n await this.dialogPresenter.showAlert(\r\n 'Tasks From Multiple Organizations',\r\n 'Some of the selected tasks belong to different organizations and therefore cannot be combined into the same request submission.',\r\n );\r\n return;\r\n }\r\n\r\n const externalSources = new Set();\r\n for (const task of tasks) {\r\n for (const testMethod of task.testMethods ?? []) {\r\n externalSources.add(testMethod.externalSource);\r\n }\r\n }\r\n if (externalSources.size > 1) {\r\n await this.dialogPresenter.showAlert(\r\n 'Tasks With Incompatible Test Methods',\r\n 'Some of the selected tasks have test methods that cannot be combined into the same request submission.',\r\n );\r\n return;\r\n }\r\n\r\n this.router.navigateToRoute('location-testing-request-detail', {\r\n id: 'create',\r\n taskIds: tasks.map((t) => t.id),\r\n organizationId: organizationIds[0],\r\n });\r\n }\r\n}\r\n","import { ManageTestMethodDataRow } from 'location-testing/test-method-management/manage-test-method-data-row';\r\nimport TestMethod from './test-method';\r\n\r\nconst testMethodNameFormatting = (\r\n testMethod: TestMethod,\r\n isImpersonatingUser: boolean,\r\n isImpersonatingOrg: boolean,\r\n): string => {\r\n return isImpersonatingUser || isImpersonatingOrg\r\n ? `${testMethod.billCode} - ${testMethod.name} - ${testMethod.externalId}`\r\n : `${testMethod.billCode} - ${testMethod.name}`;\r\n};\r\n\r\nconst testMethodManagementNameFormatting = (\r\n testMethod: ManageTestMethodDataRow,\r\n isImpersonatingUser: boolean,\r\n isImpersonatingOrg: boolean,\r\n): string => {\r\n return isImpersonatingUser || isImpersonatingOrg\r\n ? `${testMethod.billCode} - ${testMethod.testMethodName} - ${testMethod.externalId}`\r\n : `${testMethod.billCode} - ${testMethod.testMethodName}`;\r\n};\r\n\r\n// This method evaluates each object is a TestMethods, but are treated like plain js object\r\n// Used for the pop up on plan management\r\nconst testMethodPopUpManagementNameFormatting = (\r\n nonDefinedTestMethod: any,\r\n isImpersonatingUser: boolean,\r\n isImpersonatingOrg: boolean,\r\n): string => {\r\n return isImpersonatingUser || isImpersonatingOrg\r\n ? `${nonDefinedTestMethod.billCode} - ${nonDefinedTestMethod.name} - ${nonDefinedTestMethod.externalId}`\r\n : `${nonDefinedTestMethod.billCode} - ${nonDefinedTestMethod.name}`;\r\n};\r\n\r\nconst isImpersonatingUserOrOrg = (\r\n isImpersonatingUser: boolean,\r\n isImpersonatingOrg: boolean,\r\n): boolean => {\r\n return isImpersonatingUser || isImpersonatingOrg ? true : false;\r\n};\r\n\r\nexport {\r\n testMethodNameFormatting,\r\n isImpersonatingUserOrOrg,\r\n testMethodManagementNameFormatting,\r\n testMethodPopUpManagementNameFormatting,\r\n};\r\n","import { ColDef, ColGroupDef, GridOptions } from 'ag-grid-community';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport {\r\n agFormatBoolean,\r\n agFormatDateAndTimeToLocale,\r\n} from 'infrastructure/ag-grid/ag-value-formatters';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\n\r\nconst template = '${data.pointName}';\r\nclass AgCellDelegateHandler extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(template);\r\n }\r\n}\r\n\r\nconst colDefs: (ColDef | ColGroupDef)[] = [\r\n { headerName: 'Sample Id', field: 'sampleId' },\r\n { headerName: 'Test Method', field: 'testMethodDisplayName' },\r\n {\r\n headerName: 'Collected',\r\n field: 'collectionDate',\r\n width: 150,\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n },\r\n { headerName: 'Room', field: 'room' },\r\n {\r\n headerName: 'Point',\r\n field: 'pointName',\r\n cellRenderer: AgCellDelegateHandler,\r\n },\r\n {\r\n headerName: 'Mobile',\r\n field: 'isMobile',\r\n valueFormatter: agFormatBoolean,\r\n },\r\n { headerName: 'Zone', field: 'zone' },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: colDefs,\r\n defaultColDef: {\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n },\r\n suppressContextMenu: true,\r\n};\r\n\r\nconst remediationFailedTestGridOptions: GridOptions = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('remediation-failed-tests-grid')\r\n .build();\r\n\r\nexport { remediationFailedTestGridOptions };\r\n","export interface ExportTaskCollectionTemplateConfiguration {\r\n id: number;\r\n organizationId: number;\r\n templateName: string;\r\n}\r\n\r\nexport const emptyExportTaskCollectionTemplateConfiguration = (): ExportTaskCollectionTemplateConfiguration => ({\r\n id: 0,\r\n organizationId: 0,\r\n templateName: '',\r\n});\r\n","import DataGridSelectAllItem from 'infrastructure/components/data-grid-select-all-item';\r\nimport Organization from 'organizations/organization';\r\nimport { ExportTaskCollectionTemplateConfiguration } from './export-task-collection-template-configuration';\r\n\r\nexport default class UiViewExportTaskCollectionTemplate implements DataGridSelectAllItem {\r\n private _id: number;\r\n private _displayName: string;\r\n private _isActive;\r\n private _organizationConfigurations: ExportTaskCollectionTemplateConfiguration[];\r\n private _organizations: Organization[];\r\n\r\n isSelected: boolean;\r\n\r\n constructor(\r\n id: number,\r\n organizationConfigurations: ExportTaskCollectionTemplateConfiguration[],\r\n isActive: boolean,\r\n organizations: Organization[]) {\r\n if(organizationConfigurations.length === 0){\r\n throw new Error('There must be at least one organizationConfiguration for each UiViewExportTaskCollectionTemplate.');\r\n }\r\n if(organizations.length === 0) {\r\n throw new Error('There must be at least one organization for each UiViewExportTaskCollectionTemplate.');\r\n }\r\n this._id = id;\r\n this._organizationConfigurations = organizationConfigurations;\r\n this._isActive = isActive;\r\n this._organizations = organizations;\r\n }\r\n\r\n public get id() {\r\n return this._id;\r\n }\r\n\r\n public get displayName() {\r\n const join = (arr, sep=', ') => \r\n arr.reduce((acc, item, i) => `${acc}${i ? sep :''}${this._organizations.find(o => o.id === item.organizationId).name} (${item.templateName})`, ''); \r\n this._displayName = join(this._organizationConfigurations);\r\n \r\n return this._displayName;\r\n }\r\n\r\n public get isActive() {\r\n return this._isActive;\r\n }\r\n\r\n public set isActive(isActive: boolean) {\r\n this._isActive = isActive;\r\n }\r\n}\r\n","import { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface OrganizationsQuery {\r\n organizationIds: number[];\r\n}\r\n\r\nexport class OrganizationsQueryFilters extends BaseQueryFilter\r\n implements QueryFiltered {\r\n organizationIds: number[];\r\n private _defaultOrganizationIds: number[];\r\n\r\n constructor(defaultOrganizationIds: number[] = []) {\r\n super();\r\n this._defaultOrganizationIds = defaultOrganizationIds;\r\n this.organizationIds = [...defaultOrganizationIds];\r\n }\r\n\r\n reset(): void {\r\n this.organizationIds = [...this._defaultOrganizationIds];\r\n }\r\n\r\n public get count() {\r\n return (Number(!!this.organizationIds?.length));\r\n }\r\n\r\n getQueryParams(): OrganizationsQuery {\r\n return {\r\n organizationIds: this.organizationIds,\r\n };\r\n }\r\n\r\n resetFilterValues(): void {\r\n this.organizationIds = [];\r\n }\r\n\r\n setFilterValues(params: OrganizationsQuery): void {\r\n this.resetFilterValues();\r\n\r\n super.setQueryFilteredValues({\r\n organizationIds: params.organizationIds?.map(Number)\r\n }, this);\r\n }\r\n}\r\n","export default [\r\n { title: 'Not Specified', value: 'NotSpecified' },\r\n { title: 'Pre Operations', value: 'PreOperations' },\r\n { title: 'During Operations', value: 'DuringOperations' },\r\n { title: 'Post Operations', value: 'PostOperations' },\r\n];\r\n","import { BaseQueryFilter } from 'infrastructure/components/query-filters/base-query-filter';\r\nimport {\r\n CollectionTypeQuery,\r\n CollectionTypesQueryFilters,\r\n} from 'infrastructure/components/query-filters/collection-types-query-filter';\r\nimport {\r\n DateRangeQuery,\r\n DateRangeQueryFilter,\r\n} from 'infrastructure/components/query-filters/date-range-query-filter';\r\nimport {\r\n IsAssignedQuery,\r\n IsAssignedQueryFilters,\r\n} from 'infrastructure/components/query-filters/is-assigned-query-filter';\r\nimport {\r\n MapPlanQuery,\r\n MapPlanQueryFilter,\r\n} from 'infrastructure/components/query-filters/map-plan-query-filter';\r\nimport {\r\n OperationsTimingQuery,\r\n OperationsTimingQueryFilters,\r\n} from 'infrastructure/components/query-filters/operations-timing-query-filter';\r\nimport { QueryFiltered } from 'infrastructure/components/query-filters/query-filtered';\r\nimport {\r\n RecordStatusQuery,\r\n RecordStatusQueryFilters,\r\n} from 'infrastructure/components/query-filters/record-status-query-filter';\r\nimport CollectionType from 'location-testing/collection-type';\r\nimport RecordStatus from 'record-status';\r\n\r\nexport interface TaskListQuery {\r\n dateRangeOption?: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n enableTimeFilter?: boolean;\r\n mapId?: number;\r\n planId?: number;\r\n mapIds: number[];\r\n planIds: number[];\r\n recordStatus?: RecordStatus;\r\n isAssigned?: string;\r\n onlyAssignedToMe?: boolean;\r\n pointMobile?: any[];\r\n pointName?: string;\r\n pointRisks?: string[];\r\n pointRooms?: string[];\r\n pointTypes?: string[];\r\n pointZones?: string[];\r\n taskStatusIds?: number[];\r\n testMethodIds?: number[];\r\n collectionTypes?: CollectionType[];\r\n operationsTimings?: string[];\r\n}\r\nexport class TaskListQueryFilters extends BaseQueryFilter implements QueryFiltered {\r\n private _filterCaption: string;\r\n dateRangeQueryFilters: DateRangeQueryFilter;\r\n mapPlanQueryFilters: MapPlanQueryFilter;\r\n recordStatusQueryFilters: RecordStatusQueryFilters;\r\n isAssignedQueryFilters: IsAssignedQueryFilters;\r\n collectionTypesQueryFilters: CollectionTypesQueryFilters;\r\n operationsTimingQueryFilters: OperationsTimingQueryFilters;\r\n\r\n onlyAssignedToMe: boolean;\r\n pointMobile: any[];\r\n pointName: string;\r\n pointRisks: string[];\r\n pointRooms: string[];\r\n pointTypes: string[];\r\n pointZones: string[];\r\n taskStatusIds: number[];\r\n testMethodIds: number[];\r\n\r\n constructor() {\r\n super();\r\n\r\n this.dateRangeQueryFilters = new DateRangeQueryFilter();\r\n this.mapPlanQueryFilters = new MapPlanQueryFilter();\r\n this.recordStatusQueryFilters = new RecordStatusQueryFilters();\r\n this.isAssignedQueryFilters = new IsAssignedQueryFilters();\r\n this.collectionTypesQueryFilters = new CollectionTypesQueryFilters();\r\n this.operationsTimingQueryFilters = new OperationsTimingQueryFilters();\r\n\r\n this.onlyAssignedToMe = false;\r\n this.pointMobile = [];\r\n this.pointName = null;\r\n this.pointRisks = [];\r\n this.pointRooms = [];\r\n this.pointTypes = [];\r\n this.pointZones = [];\r\n this.taskStatusIds = [];\r\n this.testMethodIds = [];\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n this.mapPlanQueryFilters.count +\r\n this.recordStatusQueryFilters.count +\r\n this.isAssignedQueryFilters.count +\r\n this.collectionTypesQueryFilters.count +\r\n this.operationsTimingQueryFilters.count +\r\n Number(!!(this.testMethodIds && this.testMethodIds.length)) +\r\n Number(!!(this.pointName && this.pointName.length)) +\r\n Number(!!(this.pointRooms && this.pointRooms.length)) +\r\n Number(!!(this.pointZones && this.pointZones.length)) +\r\n Number(!!(this.pointMobile && this.pointMobile.length)) +\r\n Number(!!(this.pointTypes && this.pointTypes.length)) +\r\n Number(!!(this.pointRisks && this.pointRisks.length)) +\r\n Number(!!(this.taskStatusIds && !!this.taskStatusIds.length)) +\r\n Number(!!this.onlyAssignedToMe)\r\n );\r\n }\r\n\r\n public get filterCaption(): string {\r\n return this._filterCaption;\r\n }\r\n\r\n reset(): void {\r\n this.dateRangeQueryFilters.reset();\r\n this.mapPlanQueryFilters.reset();\r\n this.recordStatusQueryFilters.reset();\r\n this.isAssignedQueryFilters.reset();\r\n this.collectionTypesQueryFilters.reset();\r\n this.operationsTimingQueryFilters.reset();\r\n\r\n this.onlyAssignedToMe = false;\r\n this.pointMobile = [];\r\n this.pointRisks = [];\r\n this.pointRooms = [];\r\n this.pointTypes = [];\r\n this.pointZones = [];\r\n this.taskStatusIds = [];\r\n this.testMethodIds = [];\r\n }\r\n\r\n getQueryParams(): TaskListQuery {\r\n return {\r\n ...this.dateRangeQueryFilters.getQueryParams(),\r\n ...this.mapPlanQueryFilters.getQueryParams(),\r\n ...this.recordStatusQueryFilters.getQueryParams(),\r\n ...this.isAssignedQueryFilters.getQueryParams(),\r\n ...this.collectionTypesQueryFilters.getQueryParams(),\r\n ...this.operationsTimingQueryFilters.getQueryParams(),\r\n testMethodIds: this.testMethodIds,\r\n pointName: this.pointName,\r\n pointRooms: this.pointRooms,\r\n pointZones: this.pointZones,\r\n pointTypes: this.pointTypes,\r\n pointRisks: this.pointRisks,\r\n taskStatusIds: this.taskStatusIds,\r\n pointMobile: this.pointMobile,\r\n onlyAssignedToMe: this.onlyAssignedToMe,\r\n };\r\n }\r\n\r\n setFilterValues(params: TaskListQuery): void {\r\n const dateRangeQuery: DateRangeQuery = {\r\n dateRangeOverride: params.dateRangeOverride,\r\n dateRangeOption: params.dateRangeOption,\r\n targetStartDate: params.targetStartDate,\r\n targetEndDate: params.targetEndDate,\r\n enableTimeFilter: params.enableTimeFilter,\r\n };\r\n const mapPlanQuery: MapPlanQuery = {\r\n mapId: params.mapId,\r\n planId: params.planId,\r\n mapIds: params.mapIds,\r\n planIds: params.planIds,\r\n };\r\n const recordStatusQuery: RecordStatusQuery = { recordStatus: params.recordStatus };\r\n const isAssignedQuery: IsAssignedQuery = { isAssigned: params.isAssigned };\r\n const collectionTypeQuery: CollectionTypeQuery = {\r\n collectionTypes: params.collectionTypes,\r\n };\r\n const operationsTimingQuery: OperationsTimingQuery = {\r\n operationsTimings: params.operationsTimings,\r\n };\r\n const {\r\n onlyAssignedToMe,\r\n pointMobile,\r\n pointName,\r\n pointRisks,\r\n pointRooms,\r\n pointTypes,\r\n pointZones,\r\n taskStatusIds,\r\n testMethodIds,\r\n } = { ...params };\r\n\r\n this.dateRangeQueryFilters.setFilterValues(dateRangeQuery);\r\n this.mapPlanQueryFilters.setFilterValues(mapPlanQuery);\r\n this.recordStatusQueryFilters.setFilterValues(recordStatusQuery);\r\n this.isAssignedQueryFilters.setFilterValues(isAssignedQuery);\r\n this.collectionTypesQueryFilters.setFilterValues(collectionTypeQuery);\r\n this.operationsTimingQueryFilters.setFilterValues(operationsTimingQuery);\r\n\r\n super.setQueryFilteredValues(\r\n {\r\n onlyAssignedToMe,\r\n pointMobile,\r\n pointName,\r\n pointRisks,\r\n pointRooms,\r\n pointTypes,\r\n pointZones,\r\n taskStatusIds,\r\n testMethodIds: Array.isArray(testMethodIds) ? testMethodIds : [testMethodIds],\r\n },\r\n this,\r\n );\r\n\r\n this._filterCaption = super.getFilterCaption(\r\n this.count,\r\n 'Target Date Range',\r\n this.dateRangeQueryFilters.dateRangeCaption,\r\n );\r\n }\r\n}\r\n","export default class SegmentationTemplateSegmentUsages {\r\n static None = new SegmentationTemplateSegmentUsages('None');\r\n static SampleLabels = new SegmentationTemplateSegmentUsages('SampleLabels');\r\n static RequestCoas = new SegmentationTemplateSegmentUsages('RequestCoas');\r\n\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n toString() {\r\n return this.name;\r\n }\r\n\r\n in(usages: string) {\r\n let names = (usages ?? '').split(',').map(v => v.trim());\r\n return names.includes(this.name);\r\n }\r\n\r\n static combine(usages: SegmentationTemplateSegmentUsages[]) {\r\n return usages\r\n .filter(u => u.name !== SegmentationTemplateSegmentUsages.None.name)\r\n .map(u => u.name).join(', ')\r\n || SegmentationTemplateSegmentUsages.None.name;\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class SupportTopicService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getSupportTopics() {\r\n return this.httpClient.get('help/support-topics');\r\n }\r\n\r\n getSupportTopic(id) {\r\n return this.httpClient.get(`help/support-topics/${id}`);\r\n }\r\n\r\n deleteSupportTopics(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`help/support-topics?${query}`);\r\n }\r\n\r\n saveSupportTopic(supportTopic) {\r\n if (!supportTopic.id)\r\n return this.httpClient.post('help/support-topics/', supportTopic);\r\n\r\n return this.httpClient.put(`help/support-topics/${supportTopic.id}`, supportTopic);\r\n }\r\n}\r\n","import { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface OperationsTimingQuery {\r\n operationsTimings: string[];\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class OperationsTimingQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered\r\n{\r\n operationsTimings: string[];\r\n\r\n constructor() {\r\n super();\r\n this.operationsTimings = [];\r\n }\r\n\r\n public get count() {\r\n return Number(!!this.operationsTimings?.length);\r\n }\r\n\r\n reset(): void {\r\n this.operationsTimings = [];\r\n }\r\n\r\n getQueryParams(): OperationsTimingQuery {\r\n return {\r\n operationsTimings: this.operationsTimings,\r\n };\r\n }\r\n\r\n setFilterValues(params: OperationsTimingQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const { operationsTimings } = params;\r\n\r\n let operationsTimingsArr: string[];\r\n if (operationsTimings) {\r\n operationsTimingsArr = Array.isArray(operationsTimings)\r\n ? operationsTimings\r\n : [operationsTimings];\r\n }\r\n\r\n this.operationsTimings = operationsTimingsArr;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport AdhocReportInfo from './contracts/adhoc-report-info';\r\n\r\n@autoinject\r\nexport default class AdhocReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n getDownloadUrl(id, format) {\r\n return `api/reporting/adhoc-reports/${id}/results?format=${format}`;\r\n }\r\n\r\n getCurrentUserAdhocReports(): Promise {\r\n return this.httpClient.get(\r\n 'reporting/adhoc-reports',\r\n ) as unknown as Promise;\r\n }\r\n\r\n getAdhocReport(id) {\r\n return this.httpClient.get(`reporting/adhoc-reports/${id}`);\r\n }\r\n\r\n getTempAdhocReportResults(adhocReport) {\r\n return this.httpClient.post(\r\n 'reporting/adhoc-reports/temp/results',\r\n adhocReport,\r\n );\r\n }\r\n\r\n getAdhocReportResults(id) {\r\n return this.httpClient.get(`reporting/adhoc-reports/${id}/results`);\r\n }\r\n\r\n deleteAdhocReports(ids) {\r\n var query = ids.map((id) => `id=${id}`).join('&');\r\n return this.httpClient.delete(`reporting/adhoc-reports?${query}`);\r\n }\r\n\r\n saveAdhocReport(adhocReport) {\r\n if (!adhocReport.id)\r\n return this.httpClient.post(\r\n 'reporting/adhoc-reports/',\r\n adhocReport,\r\n );\r\n\r\n return this.httpClient.put(\r\n `reporting/adhoc-reports/${adhocReport.id}`,\r\n adhocReport,\r\n );\r\n }\r\n}\r\n","import { inject, transient } from 'aurelia-framework';\r\nimport { HttpClient, HttpResponseMessage } from 'aurelia-http-client';\r\nimport ApplicationInsightsService from './application-insights-service';\r\n\r\nfunction getConsoleFunction(logLevel) {\r\n switch (logLevel) {\r\n case 4:\r\n return console.error;\r\n\r\n case 3:\r\n return console.warn;\r\n\r\n case 2:\r\n default:\r\n return console.info;\r\n }\r\n}\r\n\r\nfunction stringifyError(error) {\r\n if (error instanceof HttpResponseMessage) return error.response;\r\n\r\n if (error instanceof Error) return error.stack;\r\n\r\n if (error.message) return error.message;\r\n\r\n if (typeof error === 'string') return error;\r\n\r\n var errorToString = error.toString();\r\n if (errorToString !== '[object Object]') return errorToString;\r\n\r\n try {\r\n return JSON.stringify(error);\r\n } catch (e) {\r\n console.error('Error stringifying error.', e);\r\n return '[cannot stringify error]';\r\n }\r\n}\r\n\r\nfunction stringifyState(state) {\r\n try {\r\n return JSON.stringify(state);\r\n } catch (e) {\r\n console.error('Error stringifying state.', e);\r\n return '\"cannot stringify state\"';\r\n }\r\n}\r\n\r\nfunction tryParse(data) {\r\n try {\r\n return JSON.parse(data);\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\nvar enableConsoleLog = window.location.hostname === 'localhost';\r\n\r\n// Log levels in used in web-client: info = 2, warn = 3, error = 4\r\n// These values come from Microsoft.Extensions.Logging.LogLevel\r\n\r\nfunction getErrorData(error) {\r\n if (!error) return {};\r\n\r\n if (error instanceof HttpResponseMessage) {\r\n let responseContent = tryParse(error.response);\r\n let exception = (responseContent && responseContent.exception) || error.response;\r\n\r\n return {\r\n exception: exception && exception.toString(),\r\n apiErrorCode: responseContent && responseContent.apiErrorCode,\r\n requestId: error.headers && error.headers.get('x-http-request-id'),\r\n httpMethod: error.requestMessage.method,\r\n statusCode: error.statusCode,\r\n url: window.location.origin + error.requestMessage.baseUrl + error.requestMessage.url,\r\n };\r\n }\r\n\r\n return {\r\n exception: stringifyError(error),\r\n apiErrorCode: error.apiErrorCode,\r\n requestId: error.httpRequestId,\r\n httpMethod: error.httpMethod,\r\n statusCode: error.httpStatusCode,\r\n url: error.url,\r\n };\r\n}\r\n\r\n@transient()\r\n@inject(HttpClient, ApplicationInsightsService)\r\nexport default class Logger {\r\n constructor(httpClient, applicationInsightsService) {\r\n this.httpClient = httpClient;\r\n this.applicationInsightsService = applicationInsightsService;\r\n this.name = '';\r\n }\r\n\r\n info(message, state) {\r\n this.log({\r\n logLevel: 2,\r\n message,\r\n state,\r\n });\r\n }\r\n\r\n warn(message, error, state) {\r\n this.log({\r\n logLevel: 3,\r\n message,\r\n error,\r\n state,\r\n });\r\n }\r\n\r\n error(message, error, state) {\r\n this.log({\r\n logLevel: 4,\r\n message,\r\n error,\r\n state,\r\n });\r\n }\r\n\r\n log({ logLevel = 2, message = '', error = null, state = null } = {}) {\r\n try {\r\n var loggerName = `[web-client] ${this.name}`;\r\n\r\n if (enableConsoleLog) {\r\n var consoleMessage = `${loggerName}: ${message}`;\r\n var consoleParameters = [consoleMessage, error, state].filter(\r\n (item) => typeof item !== 'undefined' && item !== null,\r\n );\r\n var consoleFunction = getConsoleFunction(logLevel);\r\n consoleFunction(...consoleParameters);\r\n }\r\n\r\n var data = {\r\n logLevel,\r\n name: loggerName,\r\n message,\r\n state: state && stringifyState(state),\r\n };\r\n\r\n var errorData = getErrorData(error);\r\n var logEntry = Object.assign({}, data, errorData);\r\n\r\n this.httpClient.post('log-entries', logEntry).catch((e) => {\r\n console.error('Error posting log entry to server.', e);\r\n });\r\n\r\n errorData.loggerName = this.name;\r\n this.applicationInsightsService.trackEvent(\r\n logLevel,\r\n error,\r\n message,\r\n errorData,\r\n data.state,\r\n );\r\n } catch (e) {\r\n console.error('Error logging in logger.', e);\r\n }\r\n }\r\n}\r\n","import {\r\n ColDef,\r\n ColGroupDef,\r\n GridOptions,\r\n IAggFuncParams,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n} from 'ag-grid-community';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport moment from 'moment';\r\nimport { renderAgGridCellForAurelia } from '../infrastructure/aurelia-cell-renderer';\r\n\r\nconst getEmmaValue = (params: ValueGetterParams, field: string) => {\r\n return (params.data && params.data[field]) || 'Standard Submission';\r\n};\r\n\r\nconst formatIsMobile = (params: ValueFormatterParams): string => {\r\n switch (params.value) {\r\n case true:\r\n return 'Yes';\r\n case false:\r\n return 'No';\r\n default:\r\n return 'Blank';\r\n }\r\n};\r\n\r\nconst formatResult = (params: ValueFormatterParams): string => {\r\n if (typeof params.value === 'undefined') {\r\n return '';\r\n }\r\n\r\n switch (params.value) {\r\n case 'True':\r\n return 'Pass';\r\n case 'False':\r\n return 'Fail';\r\n default:\r\n return 'Incomplete';\r\n }\r\n};\r\n\r\n// This gets called BEFORE valueFormatter\r\nconst countResultAggFunction = (params: IAggFuncParams, type?: string): number => {\r\n let count = 0;\r\n params.values.forEach((v) => {\r\n if (typeof v === 'string' && v === type) {\r\n count++;\r\n } else if (typeof v === 'number') {\r\n count += v;\r\n }\r\n });\r\n\r\n return count;\r\n};\r\n\r\n// This gets called AFTER aggFunc\r\nconst resultValueFormatter = (params: ValueFormatterParams, type?: string): string => {\r\n if (typeof params.value === 'number') {\r\n return params.value.toString();\r\n }\r\n\r\n return params.value === type ? '1' : '0';\r\n};\r\n\r\nconst formatDateToLocal = (params: ValueFormatterParams): string => {\r\n if (!params.value) {\r\n return;\r\n }\r\n\r\n return moment(params.value).local().format('L LT');\r\n};\r\n\r\nconst formatCollectionType = (params: ValueFormatterParams): string => {\r\n if (!params.value) {\r\n return;\r\n }\r\n\r\n return params.value === 'CorrectiveAction' ? 'Corrective Action' : params.value;\r\n};\r\n\r\nconst testResultGridColDefs: (ColDef | ColGroupDef)[] = [\r\n {\r\n headerName: 'Organization',\r\n field: 'organizationCode',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Request Id',\r\n field: 'requestExternalId',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Sample Id',\r\n field: 'sampleExternalId',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Test',\r\n field: 'testMethodDescription',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'count(Pass)',\r\n field: 'result',\r\n colId: 'result-count-pass',\r\n toolPanelClass: 'tp-pass',\r\n aggFunc: (params: IAggFuncParams) => countResultAggFunction(params, 'True'),\r\n valueFormatter: (params: ValueFormatterParams) => resultValueFormatter(params, 'True'),\r\n chartDataType: 'series',\r\n },\r\n {\r\n headerName: 'count(Fail)',\r\n field: 'result',\r\n colId: 'result-count-fail',\r\n toolPanelClass: 'tp-fail',\r\n aggFunc: (params: IAggFuncParams) => countResultAggFunction(params, 'False'),\r\n valueFormatter: (params: ValueFormatterParams) => resultValueFormatter(params, 'False'),\r\n chartDataType: 'series',\r\n },\r\n {\r\n headerName: 'count(Incomplete)',\r\n field: 'result',\r\n colId: 'result-count-incomplete',\r\n toolPanelClass: 'tp-incomplete',\r\n aggFunc: (params: IAggFuncParams) => countResultAggFunction(params, 'Incomplete'),\r\n valueFormatter: (params: ValueFormatterParams) =>\r\n resultValueFormatter(params, 'Incomplete'),\r\n chartDataType: 'series',\r\n },\r\n {\r\n headerName: 'Root Cause',\r\n field: 'remediationRootCauseName',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Map',\r\n field: 'mapName',\r\n valueGetter: (params: ValueGetterParams) => getEmmaValue(params, 'mapName'),\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Plan',\r\n field: 'planName',\r\n valueGetter: (params: ValueGetterParams) => getEmmaValue(params, 'planName'),\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Test Created',\r\n field: 'testCreateDateTime',\r\n valueFormatter: formatDateToLocal,\r\n initialHide: true,\r\n },\r\n {\r\n headerName: 'Sample Detail',\r\n marryChildren: true,\r\n children: [\r\n {\r\n headerName: 'Sample Description',\r\n field: 'sampleDescription',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Result',\r\n field: 'result',\r\n valueFormatter: formatResult,\r\n },\r\n {\r\n headerName: 'Test Code',\r\n field: 'testCode',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n filter: 'agTextColumnFilter',\r\n },\r\n {\r\n headerName: 'Quantitative Result',\r\n field: 'quantitativeResult',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Qualitative Result',\r\n field: 'qualitativeResult',\r\n columnGroupShow: 'open',\r\n },\r\n ],\r\n },\r\n {\r\n headerName: 'Point Detail',\r\n marryChildren: true,\r\n children: [\r\n {\r\n headerName: 'Point Name',\r\n field: 'pointName',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Point Description',\r\n field: 'pointDescription',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Point Zone',\r\n field: 'pointZone',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Point Room',\r\n field: 'pointRoom',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n\r\n {\r\n headerName: 'Point Type',\r\n field: 'pointType',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Point Risk',\r\n field: 'pointRisk',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Mobility',\r\n field: 'pointIsMobile',\r\n valueFormatter: formatIsMobile,\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n },\r\n ],\r\n },\r\n {\r\n headerName: 'Task Detail',\r\n marryChildren: true,\r\n children: [\r\n {\r\n headerName: 'Task Id',\r\n field: 'taskInternalId',\r\n chartDataType: 'excluded',\r\n },\r\n {\r\n headerName: 'Task Collection Type',\r\n field: 'taskCollectionType',\r\n columnGroupShow: 'open',\r\n chartDataType: 'category',\r\n valueFormatter: formatCollectionType,\r\n },\r\n {\r\n headerName: 'Task Collection DateTime',\r\n field: 'taskCollectionDateTime',\r\n columnGroupShow: 'open',\r\n chartDataType: 'series',\r\n valueFormatter: formatDateToLocal,\r\n },\r\n ],\r\n },\r\n {\r\n headerName: 'View in EMMA',\r\n suppressMenu: true,\r\n cellClass: 'medium-text-center',\r\n width: 120,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n chartDataType: 'excluded',\r\n enableRowGroup: false,\r\n enablePivot: false,\r\n pinned: 'right',\r\n valueGetter: (params: ValueGetterParams) => {\r\n if (!params.data) {\r\n return;\r\n }\r\n const { data } = params;\r\n\r\n return {\r\n data,\r\n template: `\r\n \r\n `,\r\n };\r\n },\r\n cellRenderer: renderAgGridCellForAurelia,\r\n },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: testResultGridColDefs,\r\n defaultColDef: {\r\n minWidth: 100,\r\n enableValue: true,\r\n enableRowGroup: true,\r\n enablePivot: true,\r\n },\r\n autoGroupColumnDef: {\r\n minWidth: 200,\r\n },\r\n sideBar: 'columns',\r\n animateRows: true,\r\n statusBar: {\r\n statusPanels: [\r\n { statusPanel: 'agTotalAndFilteredRowCountComponent', align: 'left' },\r\n { statusPanel: 'agTotalRowCountComponent', align: 'center' },\r\n { statusPanel: 'agFilteredRowCountComponent' },\r\n { statusPanel: 'agSelectedRowCountComponent' },\r\n { statusPanel: 'agAggregationComponent' },\r\n ],\r\n },\r\n suppressAggFuncInHeader: true,\r\n enableRangeSelection: true,\r\n enableCharts: true,\r\n popupParent: document.body,\r\n customChartThemes: {\r\n passFailCustomTheme: {\r\n baseTheme: 'ag-default',\r\n palette: {\r\n fills: ['#25d925', '#c00', '#9fd0cb'],\r\n strokes: ['#24d824', '#cc0000', '#9ed1cc'],\r\n },\r\n },\r\n },\r\n chartThemes: ['passFailCustomTheme', 'ag-default', 'ag-pastel', 'ag-vivid'],\r\n};\r\n\r\n// Don't set autoHeight as it squishes the column side bar when low row counts\r\nconst testResultGrid: GridOptions = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .addStatefulness('raw-test-results-grid')\r\n .build();\r\n\r\nexport { testResultGrid, testResultGridColDefs };\r\n","import { ICellRendererParams } from 'ag-grid-community';\r\nimport { Container, ViewCompiler } from 'aurelia-framework';\r\n\r\nexport function renderAgGridCellForAurelia(params: ICellRendererParams): HTMLElement {\r\n const { template, data } = Object(params.value);\r\n if (!data) {\r\n return;\r\n }\r\n\r\n const aureliaTemplate = ``;\r\n const container = Container.instance;\r\n const viewCompiler = container.get(ViewCompiler);\r\n const viewFactory = viewCompiler.compile(aureliaTemplate);\r\n const view = viewFactory.create(container);\r\n const rootElement = document.createElement('div');\r\n view.bind(params.value);\r\n view.appendNodesTo(rootElement);\r\n\r\n return rootElement;\r\n}\r\n","import operationsTimingOptions from './operations-timing-options';\r\n\r\nexport function toOperationsTiming(value: string): string {\r\n const timing = operationsTimingOptions.find((x: any) => x.value === value);\r\n return timing ? timing.value : '';\r\n}\r\n","import { GridOptions } from 'ag-grid-community';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\n\r\nconst template = `\r\n \r\n `;\r\nclass AgCellDelegateHandler extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(template);\r\n }\r\n}\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: [\r\n { headerName: 'Filename', field: 'name', width: 450 },\r\n {\r\n colId: 'fileActionCol',\r\n suppressMenu: true,\r\n headerName: '',\r\n cellRenderer: AgCellDelegateHandler,\r\n },\r\n ],\r\n};\r\n\r\nconst remediationPreFilesGridOptions: GridOptions = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('remediation-detail-pre-files-grid')\r\n .build();\r\n\r\nconst remediationPostFileGridOptions: GridOptions = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('remediation-detail-post-files-grid')\r\n .build();\r\n\r\nexport { remediationPostFileGridOptions, remediationPreFilesGridOptions };\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\n\r\nexport default class GlossaryTermService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getGlossaryTerms() {\r\n return this\r\n .httpClient\r\n .get(`help/glossary-terms`);\r\n }\r\n\r\n getGlossaryTerm(id) {\r\n return this.httpClient.get(`help/glossary-terms/${id}`);\r\n }\r\n\r\n deleteGlossaryTerms(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`help/glossary-terms?${query}`);\r\n }\r\n\r\n saveGlossaryTerm(glossaryTerm) {\r\n if (!glossaryTerm.id)\r\n return this.httpClient.post('help/glossary-terms/', glossaryTerm);\r\n\r\n return this.httpClient.put(`help/glossary-terms/${glossaryTerm.id}`, glossaryTerm);\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\n\r\nenum TestMethodGroup {\r\n SEROTYPE = 'Salmonella Serotype',\r\n SPECIATION = 'Listeria Speciation Id',\r\n PROFILE = 'Profile',\r\n}\r\n\r\nexport default TestMethodGroup;\r\n\r\nexport function getTestMethodGroups(): SelectorOption[] {\r\n return [\r\n { value: TestMethodGroup.SEROTYPE, title: 'Serotype' },\r\n { value: TestMethodGroup.SPECIATION, title: 'Speciation' },\r\n { value: TestMethodGroup.PROFILE, title: 'Profile' },\r\n ];\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class TimeZoneService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getTimeZones() {\r\n return this.httpClient.get(`time-zones`);\r\n }\r\n}\r\n","enum TaskListViewOption {\r\n LIST = 'list',\r\n CALENDAR = 'calendar'\r\n}\r\n\r\nexport default TaskListViewOption;\r\n","import { BaseQueryFilter } from 'infrastructure/components/query-filters/base-query-filter';\r\nimport {\r\n DateRangeQuery,\r\n DateRangeQueryFilter,\r\n} from 'infrastructure/components/query-filters/date-range-query-filter';\r\nimport {\r\n OrganizationsQuery,\r\n OrganizationsQueryFilters,\r\n} from 'infrastructure/components/query-filters/organizations-query-filter';\r\nimport { QueryFiltered } from 'infrastructure/components/query-filters/query-filtered';\r\n\r\nexport interface StatusQuery {\r\n organizationIds: number[];\r\n dateRangeOption?: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n requestId?: string;\r\n sampleId?: string;\r\n poNumber?: string;\r\n description?: string;\r\n format?: string;\r\n customerRequestStatus?: string;\r\n}\r\n\r\nexport class StatusQueryFilters extends BaseQueryFilter implements QueryFiltered {\r\n private _filterCaption: string;\r\n organizationQueryFilters: OrganizationsQueryFilters;\r\n dateRangeQueryFilters: DateRangeQueryFilter;\r\n requestId: string;\r\n sampleId: string;\r\n poNumber: string;\r\n description: string;\r\n format: string;\r\n customerRequestStatus: string;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.organizationQueryFilters = new OrganizationsQueryFilters();\r\n this.dateRangeQueryFilters = new DateRangeQueryFilter();\r\n this.requestId = null;\r\n this.sampleId = null;\r\n this.poNumber = null;\r\n this.description = null;\r\n this.customerRequestStatus = null;\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n this.organizationQueryFilters.count +\r\n Number(!!this.requestId && this.requestId.length > 0) +\r\n Number(!!(this.sampleId && this.sampleId.length > 0)) +\r\n Number(!!(this.poNumber && this.poNumber.length > 0)) +\r\n Number(!!(this.description && this.description.length > 0))\r\n );\r\n }\r\n public get filterCaption(): string {\r\n return this._filterCaption;\r\n }\r\n\r\n reset(): void {\r\n this.organizationQueryFilters.reset();\r\n this.dateRangeQueryFilters.reset();\r\n this.requestId = null;\r\n this.sampleId = null;\r\n this.poNumber = null;\r\n this.description = null;\r\n this.customerRequestStatus = null;\r\n }\r\n\r\n getQueryParams(): StatusQuery {\r\n return {\r\n ...this.organizationQueryFilters.getQueryParams(),\r\n ...this.dateRangeQueryFilters.getQueryParams(),\r\n requestId: this.requestId,\r\n sampleId: this.sampleId,\r\n poNumber: this.poNumber,\r\n description: this.description,\r\n format: this.format,\r\n customerRequestStatus: this.customerRequestStatus,\r\n };\r\n }\r\n\r\n setFilterValues(params: StatusQuery): void {\r\n const dateRangeQuery: DateRangeQuery = {\r\n dateRangeOption: params.dateRangeOption,\r\n targetStartDate: params.targetStartDate,\r\n targetEndDate: params.targetEndDate,\r\n dateRangeOverride: params.dateRangeOverride,\r\n };\r\n const organizationsQuery: OrganizationsQuery = { organizationIds: params.organizationIds };\r\n const { requestId, sampleId, poNumber, description, customerRequestStatus } = {\r\n ...params,\r\n };\r\n\r\n this.organizationQueryFilters.setFilterValues(organizationsQuery);\r\n this.dateRangeQueryFilters.setFilterValues(dateRangeQuery);\r\n\r\n super.setQueryFilteredValues(\r\n {\r\n requestId,\r\n sampleId,\r\n poNumber,\r\n description,\r\n customerRequestStatus,\r\n },\r\n this,\r\n );\r\n\r\n this._filterCaption = super.getFilterCaption(\r\n this.count,\r\n 'Request Creation Date Range',\r\n this.dateRangeQueryFilters.dateRangeCaption,\r\n );\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\nimport MapSummary from 'location-testing/maps/map-summary';\r\n\r\nexport default class MapSummaryConverter {\r\n static toSelectorOptions(mapSummaries: MapSummary[], activeOnly = true): SelectorOption[] {\r\n if (!mapSummaries)\r\n return [];\r\n\r\n let maps = activeOnly ? mapSummaries.filter(m => m.isActive) : mapSummaries;\r\n\r\n let options = [];\r\n maps.forEach(ms => {\r\n let option = {\r\n title: ms.name,\r\n value: ms.id\r\n } as unknown as SelectorOption;\r\n\r\n options.push(option);\r\n });\r\n\r\n return options;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { ActiveTestMethodPlans } from './contracts/active-test-method-plans';\r\nimport { ReplaceTestMethodRequest } from './contracts/replace-test-method-request';\r\nimport { TestMethodReplacemantImpactCounts } from './contracts/test-method-replacement-impact-counts';\r\n\r\n@autoinject\r\nexport default class PlanManagementService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n fetchActiveTestMethodPlans(): Promise {\r\n return this.httpClient.get('location-testing/plan-management') as any as Promise<\r\n ActiveTestMethodPlans[]\r\n >;\r\n }\r\n\r\n getTestMethodReplacementImpactCounts(\r\n testMethodId: number,\r\n organizationId?: number,\r\n ): Promise {\r\n const url = `location-testing/plan-management/test-methods/${testMethodId}/replacement-impact-count${\r\n organizationId ? '?organizationId=' + organizationId : ''\r\n }`;\r\n return this.httpClient.get(url) as any as Promise;\r\n }\r\n\r\n replaceTestMethod(replaceTestMethodRequest: ReplaceTestMethodRequest) {\r\n return this.httpClient.put('location-testing/plan-management', replaceTestMethodRequest);\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class UserGuideService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getUserGuides(code) {\r\n if (code)\r\n return this.httpClient.get(`help/user-guides/?code=${code}`);\r\n\r\n return this.httpClient.get('help/user-guides');\r\n }\r\n\r\n getUserGuide(id) {\r\n return this.httpClient.get(`help/user-guides/${id}`);\r\n }\r\n\r\n deleteUserGuides(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`help/user-guides?${query}`);\r\n }\r\n\r\n saveUserGuide(userGuide) {\r\n if (!userGuide.id)\r\n return this.httpClient.post('help/user-guides/', userGuide);\r\n\r\n return this.httpClient.put(`help/user-guides/${userGuide.id}`, userGuide);\r\n }\r\n}\r\n","// refactor this to a custom component if another similar use case arises\r\nexport const calculatePageSizes = (totalCount: number, maxCountDivisor = 1000): number[] => {\r\n if (totalCount <= maxCountDivisor) return [maxCountDivisor];\r\n\r\n const multiple = Math.ceil(totalCount / maxCountDivisor) * maxCountDivisor;\r\n const divisor = multiple / 4;\r\n\r\n const pageSizes = [divisor];\r\n for (let i = 2; i < 5; i++) {\r\n const pageSize = divisor * i;\r\n if (pageSize - totalCount < divisor) {\r\n pageSizes.push(pageSize);\r\n }\r\n }\r\n\r\n return pageSizes;\r\n};\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport Organization from './organization';\r\n\r\n@autoinject\r\nexport default class OrganizationService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n findOrganizations(startsWith: string) {\r\n const query = buildQueryString({ startsWith }, true);\r\n\r\n return this.httpClient.get(`organizations?${query}`);\r\n }\r\n\r\n getOrganization(id) {\r\n return this.httpClient.get(`organizations/${id}`);\r\n }\r\n\r\n getOrganizations(): any {\r\n return this.httpClient.get('organizations');\r\n }\r\n\r\n getImpersonatingOrganizations(): Promise {\r\n return this.httpClient.get('organizations/impersonating') as any as Promise\r\n }\r\n\r\n getOrganizationDetail(id) {\r\n return this.httpClient.get(`organizations/${id}/detail`);\r\n }\r\n\r\n saveOrganization(organization) {\r\n return this.httpClient.put(`organizations/${organization.id}`, organization);\r\n }\r\n\r\n getConfigurationValues(names, id = null) {\r\n var query = buildQueryString({ names }, true);\r\n\r\n if (!id) id = 'all';\r\n\r\n return this.httpClient.get(`organizations/${id}/configuration${query ? `?${query}` : ''}`);\r\n }\r\n\r\n getConfigurationsValues(id: number): any {\r\n return this.httpClient.get(`organizations/${id}/settings`);\r\n }\r\n\r\n saveConfigurationValues(id, data) {\r\n return this.httpClient.put(`organizations/${id}/configuration`, data);\r\n }\r\n\r\n saveConfigurationsValues(id, data) {\r\n return this.httpClient.put(`organizations/${id}/settings`, data);\r\n }\r\n\r\n async checkConfigurationFlag(name) {\r\n let configuration = await this.getConfigurationValues([name]);\r\n\r\n return Object.values(configuration).some(c => c[name]?.toLowerCase() === 'true');\r\n }\r\n\r\n async getConfiguration(nameOrNames) {\r\n let isArray = Array.isArray(nameOrNames);\r\n return await this.getConfigurationValues(isArray ? nameOrNames : [nameOrNames]);\r\n }\r\n\r\n getImpersonatingConfiguration(nameOrNames) {\r\n const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];\r\n const query = buildQueryString({names}, true);\r\n \r\n return this.httpClient.get(`organizations/impersonating/configuration?${query}`);\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class NewsItemService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getNewsItems({ forDashboard = true } = {}) {\r\n var query = forDashboard ? '?forDashboard=true' : '';\r\n return this.httpClient.get(`news-items/${query}`);\r\n }\r\n\r\n getNewsItem(id) {\r\n return this.httpClient.get(`news-items/${id}`);\r\n }\r\n\r\n deleteNewsItems(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`news-items?${query}`);\r\n }\r\n\r\n saveNewsItem(newsItem) {\r\n if (!newsItem.id)\r\n return this.httpClient.post('news-items/', newsItem);\r\n\r\n return this.httpClient.put(`news-items/${newsItem.id}`, newsItem);\r\n }\r\n}\r\n","import SegmentLookup from './segment-lookup';\r\nimport SegmentationTemplate from './segmentation-template';\r\nimport UiSegmentationTemplateSegment from './ui-segmentation-template-segment';\r\n\r\nexport interface LookupPair {\r\n code: string;\r\n value: string;\r\n}\r\n\r\nexport interface LookupMapping {\r\n sourceSegmentName: string | null;\r\n autoFillSegmentName: string | null;\r\n pairs: LookupPair[];\r\n}\r\n\r\nexport default class UiSegmentationTemplate {\r\n id: number;\r\n organizationId: number;\r\n name: string;\r\n isArchived: boolean;\r\n isActive: boolean;\r\n\r\n segments: UiSegmentationTemplateSegment[];\r\n lookupMapping: LookupMapping;\r\n\r\n organization: any;\r\n organizationCaption: string;\r\n\r\n isSelected: boolean;\r\n\r\n static fromModel(\r\n segmentationTemplate: SegmentationTemplate,\r\n organizations: any[],\r\n ): UiSegmentationTemplate {\r\n let uiSegmentationTemplate = new UiSegmentationTemplate();\r\n uiSegmentationTemplate.id = segmentationTemplate.id;\r\n uiSegmentationTemplate.organizationId = segmentationTemplate.organizationId;\r\n uiSegmentationTemplate.name = segmentationTemplate.name;\r\n uiSegmentationTemplate.isArchived = segmentationTemplate.isArchived;\r\n uiSegmentationTemplate.isActive = segmentationTemplate.isActive;\r\n\r\n const rawSegments = segmentationTemplate.segments ?? [];\r\n\r\n uiSegmentationTemplate.segments = rawSegments\r\n .filter((s) => s.isActive)\r\n .map((s) => UiSegmentationTemplateSegment.fromModel(s));\r\n\r\n const rawChild = rawSegments.find((s) => s.isActive && s.parentSegmentId != null);\r\n if (rawChild) {\r\n const rawParent = rawSegments.find((s) => s.id === rawChild.parentSegmentId);\r\n const childPairs = UiSegmentationTemplate.tryParseSegmentLookups(rawChild.values);\r\n uiSegmentationTemplate.lookupMapping = {\r\n sourceSegmentName: rawParent?.name ?? null,\r\n autoFillSegmentName: rawChild.name,\r\n pairs: childPairs.map((p) => ({ code: p.parent, value: p.child })),\r\n };\r\n } else {\r\n uiSegmentationTemplate.lookupMapping = { sourceSegmentName: null, autoFillSegmentName: null, pairs: [] };\r\n }\r\n\r\n uiSegmentationTemplate.organization = organizations.find(\r\n (o) => o.id === segmentationTemplate.organizationId,\r\n );\r\n if (uiSegmentationTemplate.organization)\r\n uiSegmentationTemplate.organizationCaption = `${uiSegmentationTemplate.organization.externalId} - ${uiSegmentationTemplate.organization.name}`;\r\n\r\n uiSegmentationTemplate.isSelected = false;\r\n\r\n return uiSegmentationTemplate;\r\n }\r\n\r\n // Malformed Values JSON should degrade to an empty pairs list rather than\r\n // fail the whole template load.\r\n static tryParseSegmentLookups(values: string): SegmentLookup[] {\r\n try {\r\n const parsed = JSON.parse(values || '[]');\r\n return Array.isArray(parsed) ? parsed : [];\r\n } catch {\r\n return [];\r\n }\r\n }\r\n\r\n toModel(): SegmentationTemplate {\r\n\r\n const segments = this.segments.map((s, index) => {\r\n const model = s.toModel();\r\n // Assign a negative temporary id to any that don't have one. \r\n // This way, we can resolve parent/child relationships later\r\n // for the segment to sement mapping\r\n if (!model.id) model.id = -(index + 1); \r\n return model;\r\n });\r\n\r\n const { sourceSegmentName, autoFillSegmentName, pairs } = this.lookupMapping ?? {};\r\n const completedPairs = (pairs ?? []).filter((p) => p.code);\r\n if (sourceSegmentName && autoFillSegmentName && completedPairs.length > 0) {\r\n const sourceSegment = segments.find((s) => s.name === sourceSegmentName);\r\n const autoFillSegment = segments.find((s) => s.name === autoFillSegmentName);\r\n if (sourceSegment && autoFillSegment) {\r\n sourceSegment.values = JSON.stringify(completedPairs.map((p) => p.code));\r\n autoFillSegment.parentSegmentId = sourceSegment.id ?? null;\r\n autoFillSegment.values = JSON.stringify(\r\n completedPairs.map((p): SegmentLookup => ({ parent: p.code, child: p.value })),\r\n );\r\n }\r\n } else {\r\n segments.forEach((s) => {\r\n s.parentSegmentId = null;\r\n s.values = null;\r\n });\r\n }\r\n\r\n return {\r\n id: this.id,\r\n organizationId: this.organizationId,\r\n name: this.name,\r\n isArchived: this.isArchived,\r\n isActive: this.isActive,\r\n segments,\r\n };\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class PasswordRequirementsService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getRequirements() {\r\n return this.httpClient.get('password-requirements/current');\r\n }\r\n\r\n saveRequirements(requirements) {\r\n return this.httpClient.post('password-requirements/current', requirements);\r\n }\r\n}\r\n","import { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface IsAssignedQuery {\r\n isAssigned: any;\r\n}\r\n\r\nexport class IsAssignedQueryFilters extends BaseQueryFilter\r\n implements IsAssignedQuery, QueryFiltered {\r\n\r\n private _isAssigned: number;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._isAssigned = -1;\r\n }\r\n\r\n public get isAssigned(): any {\r\n return this._isAssigned;\r\n }\r\n\r\n public set isAssigned(assignedState: any) {\r\n this._isAssigned = assignedState;\r\n }\r\n\r\n public get count(): number {\r\n return (Number(this._isAssigned !== -1));\r\n }\r\n\r\n reset(): void {\r\n this._isAssigned = -1;\r\n }\r\n\r\n getQueryParams(): IsAssignedQuery {\r\n return this._isAssigned === 0 || this._isAssigned === 1\r\n ? { isAssigned: this._isAssigned === 0 ? false : true }\r\n : null;\r\n }\r\n\r\n setFilterValues(params: IsAssignedQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n let isAssigned: number;\r\n switch (params.isAssigned) {\r\n case 'true':\r\n isAssigned = 1;\r\n break;\r\n case 'false':\r\n isAssigned = 0;\r\n break\r\n default:\r\n isAssigned = -1;\r\n }\r\n\r\n super.setQueryFilteredValues({ isAssigned }, this);\r\n }\r\n}\r\n","import { autoinject, buildQueryString } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport Organization from 'organizations/organization';\r\n\r\n@autoinject\r\nexport default class UserService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getUsers(search: string = null, organizationIds: number[] = []) {\r\n var query = buildQueryString({\r\n search,\r\n organizationIds\r\n }, true);\r\n\r\n return this.httpClient.get(`users?${query}`);\r\n }\r\n\r\n getUser(id: number) {\r\n return this.httpClient.get(`users/${id}`);\r\n }\r\n\r\n deleteUsers(ids: number[]) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`users?${query}`);\r\n }\r\n\r\n getCurrentUserOrganizations(): Promise {\r\n return this.httpClient.get('users/current/organizations') as any as Promise;\r\n }\r\n\r\n saveUser(user: any) {\r\n if (!user.id)\r\n return this.httpClient.post('users/', user);\r\n\r\n return this.httpClient.put(`users/${user.id}`, user);\r\n }\r\n\r\n unlockUser(id: number) {\r\n return this.httpClient.patch(`users/${id}`, { isLocked: false });\r\n }\r\n\r\n bulkUpdateUsersRole(userRoles) {\r\n return this.httpClient.put('users/roles', userRoles);\r\n }\r\n\r\n getUserRecordChanges(id: number) {\r\n return this.httpClient.get(`users/${id}/record-changes`);\r\n }\r\n}\r\n","import RecordStatus from 'record-status';\r\nimport { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface RecordStatusQuery {\r\n recordStatus: RecordStatus;\r\n}\r\n\r\nexport class RecordStatusQueryFilters extends BaseQueryFilter\r\n implements RecordStatusQuery, QueryFiltered {\r\n private _recordStatus: RecordStatus;\r\n\r\n constructor() {\r\n super();\r\n this._recordStatus = RecordStatus.ACTIVE;\r\n }\r\n\r\n public get recordStatus() {\r\n return this._recordStatus;\r\n }\r\n\r\n public set recordStatus(recordStatuses: RecordStatus) {\r\n this._recordStatus = recordStatuses || RecordStatus.ACTIVE;\r\n }\r\n\r\n public get count(): number {\r\n return (Number(!!this._recordStatus && this._recordStatus !== RecordStatus.ACTIVE));\r\n }\r\n\r\n reset(): void {\r\n this._recordStatus = RecordStatus.ACTIVE;\r\n }\r\n\r\n getQueryParams(): RecordStatusQuery {\r\n return {\r\n recordStatus: this._recordStatus,\r\n };\r\n }\r\n\r\n setFilterValues(params: RecordStatusQuery): void {\r\n super.setQueryFilteredValues(params, this);\r\n }\r\n}\r\n","import { computedFrom } from 'aurelia-framework';\r\nimport TestMethodGroup from 'location-testing/test-method-group';\r\nimport { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface ConfirmationTestingQuery {\r\n testMethodGroup: TestMethodGroup;\r\n confirmationTestValues: string[];\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class ConfirmationTestingQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered\r\n{\r\n private _testMethodGroup: TestMethodGroup;\r\n private _confirmationTestValues: string[];\r\n\r\n constructor() {\r\n super();\r\n this._testMethodGroup = null;\r\n this._confirmationTestValues = [];\r\n }\r\n\r\n @computedFrom('_testMethodGroup')\r\n public get testMethodGroup() {\r\n return this._testMethodGroup;\r\n }\r\n\r\n public set testMethodGroup(tmg: TestMethodGroup) {\r\n this._testMethodGroup = tmg;\r\n this._confirmationTestValues = [];\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n Number(!!this.testMethodGroup) +\r\n Number(!!(this._confirmationTestValues && this._confirmationTestValues.length))\r\n );\r\n }\r\n\r\n reset(): void {\r\n this._testMethodGroup = null;\r\n this._confirmationTestValues = [];\r\n }\r\n\r\n getQueryParams(): ConfirmationTestingQuery {\r\n return {\r\n testMethodGroup: this._testMethodGroup,\r\n confirmationTestValues: this._confirmationTestValues,\r\n };\r\n }\r\n\r\n setFilterValues(params: ConfirmationTestingQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n super.setQueryFilteredValues(params, this);\r\n }\r\n}\r\n","import { LocalStorageConstants } from 'infrastructure/constants/localstorage.constants';\r\nimport AgPreferences from './ag-preferences';\r\n\r\nexport const agGridGetPreferences = (preferences: T): T => {\r\n const agPreferences =\r\n JSON.parse(localStorage.getItem(LocalStorageConstants.AG_PREFERENCES)) || {};\r\n const hasTPreferences = Object.prototype.hasOwnProperty.call(\r\n agPreferences,\r\n preferences.gridName,\r\n );\r\n\r\n if (!hasTPreferences) {\r\n agPreferences[preferences.gridName] = preferences;\r\n localStorage.setItem(LocalStorageConstants.AG_PREFERENCES, JSON.stringify(agPreferences));\r\n }\r\n\r\n return agPreferences[preferences.gridName];\r\n};\r\n\r\nexport const agGridSetPreferences = (preferences: T): T => {\r\n const agPreferences =\r\n JSON.parse(localStorage.getItem(LocalStorageConstants.AG_PREFERENCES)) || {};\r\n\r\n agPreferences[preferences.gridName] = preferences;\r\n localStorage.setItem(LocalStorageConstants.AG_PREFERENCES, JSON.stringify(agPreferences));\r\n\r\n return agPreferences[preferences.gridName];\r\n};\r\n","import { computedFrom } from 'aurelia-binding';\r\nimport { OrganizationConfigurationSetting } from './organization-configuration-settings';\r\nimport OrganizationSetting from './organization-setting';\r\n\r\nexport default class OrganizationDataTypeSetting implements OrganizationSetting {\r\n name: string;\r\n displayName: string;\r\n description: string;\r\n value: string;\r\n moduleType: string;\r\n dataType: string;\r\n\r\n @computedFrom('value')\r\n get booleanValue(): boolean {\r\n return this.stringToBoolean(this.value);\r\n }\r\n\r\n set booleanValue(value: boolean) {\r\n if (this.dataType === 'Boolean') {\r\n this.value = value ? 'True' : 'False';\r\n }\r\n }\r\n\r\n get usesLocalStorage(): boolean {\r\n return this.name === OrganizationConfigurationSetting.ENABLE_BETA_FEATURES;\r\n }\r\n\r\n stringToBoolean(value: string) {\r\n switch (value) {\r\n case 'true':\r\n case 'yes':\r\n case '1':\r\n case 'True':\r\n return true;\r\n case 'false':\r\n case 'no':\r\n case '0':\r\n case 'False':\r\n case null:\r\n return false;\r\n default:\r\n return Boolean(value);\r\n }\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\nexport interface SubscriptionFrequency {\r\n minDeliveryDay: number;\r\n maxDeliveryDay: number;\r\n deliveryDayValidationErrorMessage: string;\r\n subscriptionFrequencyTypeValidationErrorMessage: string;\r\n}\r\n\r\nexport enum SubscriptionFrequencyType {\r\n Daily = 1,\r\n Weekly = 2,\r\n Monthly = 3,\r\n}\r\n\r\nexport const subscriptionFrequencyTypes: Record = {\r\n 1: { value: SubscriptionFrequencyType.Daily, title: 'Daily' },\r\n 2: { value: SubscriptionFrequencyType.Weekly, title: 'Weekly' },\r\n 3: { value: SubscriptionFrequencyType.Monthly, title: 'Monthly' },\r\n};\r\n\r\nexport function getSubscriptionFrequencyTypes(): SelectorOption[] {\r\n return [\r\n subscriptionFrequencyTypes[1],\r\n subscriptionFrequencyTypes[2],\r\n subscriptionFrequencyTypes[3],\r\n ];\r\n}\r\n\r\nexport const subscriptionFrequency: Record = {\r\n 1: {\r\n minDeliveryDay: 0,\r\n maxDeliveryDay: 0,\r\n deliveryDayValidationErrorMessage:\r\n 'The delivery day for a daily subscription must be zero(0).',\r\n subscriptionFrequencyTypeValidationErrorMessage:\r\n 'A daily subscription must have a delivery day of zero(0).',\r\n },\r\n 2: {\r\n minDeliveryDay: 1,\r\n maxDeliveryDay: 7,\r\n deliveryDayValidationErrorMessage:\r\n 'The delivery day for a weekly subscription must be between 1 and 7.',\r\n subscriptionFrequencyTypeValidationErrorMessage:\r\n 'A weekly subscription must have a delivery day between 1 and 7.',\r\n },\r\n 3: {\r\n minDeliveryDay: 1,\r\n maxDeliveryDay: 31,\r\n deliveryDayValidationErrorMessage:\r\n 'The delivery day for a monthly subscription must be between 1 and 31.',\r\n subscriptionFrequencyTypeValidationErrorMessage:\r\n 'A monthly subscription must have a delivery day between 1 and 31.',\r\n },\r\n};\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class MapAttributeService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getMapAttributes() {\r\n return this.httpClient.get(`location-testing/map-attributes`);\r\n }\r\n\r\n getMapAttributeValues(name) {\r\n return this.httpClient.get(`location-testing/map-attributes/${name}/values`);\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\n\r\n@inject(HttpClient)\r\nexport default class TestMethodService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getTestMethods(organizationIds, filters) {\r\n\r\n var queryParameters = Object.assign({}, filters, {\r\n organizationIds: Array.isArray(organizationIds) ?\r\n organizationIds :\r\n [organizationIds]\r\n });\r\n\r\n var query = buildQueryString(queryParameters, true);\r\n\r\n return this\r\n .httpClient\r\n .get(`test-methods${(query ? `?${query}` : '')}`);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport LabelTemplate from './label-template';\r\n\r\n@autoinject\r\nexport default class LabelTemplateService {\r\n constructor(private httpClient: HttpClient) {\r\n }\r\n\r\n getLabelTemplates(filters = {}, view: 'Default' | 'Selector' = 'Default') {\r\n var query = buildQueryString({ ...filters, view }, true);\r\n\r\n return this.httpClient.get(`label-templates${(query ? `?${query}` : '')}`) as any as Promise;\r\n }\r\n\r\n getLabelTemplate(id: number) {\r\n return this.httpClient.get(`label-templates/${id}`) as any as Promise;\r\n }\r\n\r\n deleteLabelTemplates(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`label-templates?${query}`);\r\n }\r\n\r\n saveLabelTemplate(labelTemplate: LabelTemplate): Promise {\r\n if (!labelTemplate.id)\r\n return this.httpClient.post('label-templates/', labelTemplate) as any as Promise;\r\n\r\n return this.httpClient.put(`label-templates/${labelTemplate.id}`, labelTemplate) as any as Promise;\r\n }\r\n}\r\n","import DisplayOnlyElementManager from './display-only-element-manager';\r\nimport UiLabelTemplate from './ui-label-template';\r\nimport UiLabelTemplateElement from './ui-label-template-element';\r\n\r\nexport default class SampleLabelDisplayOnlyElementManager implements DisplayOnlyElementManager {\r\n sampleIdElement: UiLabelTemplateElement;\r\n sampleDescriptionElement: UiLabelTemplateElement;\r\n collectionDateElement: UiLabelTemplateElement;\r\n testCodesElement: UiLabelTemplateElement;\r\n\r\n margin: number;\r\n fontSize: number;\r\n lineSpacing: number;\r\n\r\n constructor(private uiLabelTemplate: UiLabelTemplate) {\r\n const { elements } = this.uiLabelTemplate;\r\n this.margin = 6;\r\n this.fontSize = Array.isArray(elements) && elements.length ? elements[0].fontSize : 7;\r\n this.lineSpacing = 3;\r\n }\r\n\r\n createDisplayOnlyElements() {\r\n this.sampleIdElement = UiLabelTemplateElement.new(this.uiLabelTemplate, 'text', true);\r\n this.sampleIdElement.sampleTextOverride = '12-123456-001';\r\n this.sampleIdElement.bold = true;\r\n\r\n this.sampleDescriptionElement = UiLabelTemplateElement.new(\r\n this.uiLabelTemplate,\r\n 'text',\r\n true,\r\n );\r\n this.sampleDescriptionElement.sampleTextOverride = 'This is an example sample description';\r\n\r\n this.collectionDateElement = UiLabelTemplateElement.new(this.uiLabelTemplate, 'text', true);\r\n this.collectionDateElement.sampleTextOverride = '6/18/2021 8:00 AM';\r\n this.collectionDateElement.bold = true;\r\n\r\n this.positionDisplayOnlyElements();\r\n\r\n this.uiLabelTemplate.elements.push(this.sampleIdElement);\r\n this.uiLabelTemplate.elements.push(this.sampleDescriptionElement);\r\n this.uiLabelTemplate.elements.push(this.collectionDateElement);\r\n }\r\n\r\n positionDisplayOnlyElements() {\r\n this.sampleIdElement.x = this.margin;\r\n this.sampleIdElement.y = this.margin;\r\n this.sampleIdElement.width = this.uiLabelTemplate.width - 2 * this.margin;\r\n this.sampleIdElement.textAlign = 'right';\r\n\r\n this.sampleDescriptionElement.x = this.margin;\r\n this.sampleDescriptionElement.y = this.margin + this.fontSize + this.lineSpacing;\r\n this.sampleDescriptionElement.width = this.uiLabelTemplate.width - 2 * this.margin;\r\n\r\n this.collectionDateElement.x = this.margin;\r\n this.collectionDateElement.y = this.margin;\r\n this.collectionDateElement.width = this.uiLabelTemplate.width - 2 * this.margin;\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\nimport PlanType from './plans/plan-type';\r\n\r\nexport enum CollectionType {\r\n Routine = 'Routine',\r\n Vector = 'Vector',\r\n CorrectiveAction = 'CorrectiveAction'\r\n}\r\n\r\nexport const collectionTypes: Record = {\r\n Routine: { value: CollectionType.Routine, title: 'Routine' },\r\n Vector: { value: CollectionType.Vector, title: 'Vector' },\r\n CorrectiveAction: { value: CollectionType.CorrectiveAction, title: 'Corrective Action' }\r\n};\r\n\r\nexport default CollectionType;\r\n\r\nexport function getCollectionTypeOptions(): SelectorOption[] {\r\n return [\r\n collectionTypes.Routine,\r\n collectionTypes.Vector,\r\n collectionTypes.CorrectiveAction\r\n ];\r\n}\r\n\r\nexport function getScheduledCollectionTypeFilterOptions(): SelectorOption[] {\r\n return [\r\n collectionTypes.Routine\r\n ]\r\n}\r\n\r\nexport function getAdhocCollectionTypeOptions(): SelectorOption[] {\r\n return getCollectionTypeOptions();\r\n}\r\n\r\nexport function getDiscretionaryCollectionTypeOptions(): SelectorOption[] {\r\n return getCollectionTypeOptions();\r\n}\r\n\r\nexport function getPriorityRiskBasedCollectionTypeOptions(): SelectorOption[] {\r\n return getCollectionTypeOptions();\r\n}\r\n\r\nexport function getCapPlanCollectionTypeOptions(): SelectorOption[] {\r\n return [\r\n collectionTypes.Vector,\r\n collectionTypes.CorrectiveAction,\r\n ];\r\n}\r\n\r\nexport function toCollectionTypeTitle(collectionType: CollectionType): string {\r\n return collectionType !== CollectionType.CorrectiveAction ? collectionType.toString() : 'Corrective Action';\r\n}\r\n\r\nexport function planTypeToCollectionTypes(planType: PlanType): SelectorOption[] {\r\n return planType === PlanType.SCHEDULED\r\n ? getScheduledCollectionTypeFilterOptions()\r\n : getCollectionTypeOptions();\r\n}\r\n\r\nexport function planTypeStringToCollectionTypes(planType: string): SelectorOption[] {\r\n return planTypeToCollectionTypes(PlanType[planType]);\r\n}\r\n\r\nexport function planTypeIdToCollectionTypes(planTypeId: number): SelectorOption[] {\r\n const planType = PlanType[planTypeId];\r\n return planTypeStringToCollectionTypes(planType);\r\n}\r\n\r\nexport function selectorOptionToCollectionType(selectorOption: SelectorOption): CollectionType {\r\n if (!Object.getOwnPropertyDescriptor(collectionTypes, selectorOption.value)) {\r\n throw new Error('The SelectorOption is not of type CollectionType.');\r\n }\r\n\r\n return collectionTypes[selectorOption.value];\r\n}\r\n\r\nexport function collectionTypesToSelectorOptions(cts: CollectionType[]): SelectorOption[] {\r\n\r\n const selectorOptions: SelectorOption[] = [];\r\n if (cts) {\r\n if (!Array.isArray(cts)) {\r\n throw new Error('The collection types passed are not an array.');\r\n }\r\n cts.forEach((ct: CollectionType) => {\r\n selectorOptions.push(collectionTypes[ct]);\r\n });\r\n }\r\n\r\n return selectorOptions;\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient, HttpResponseMessage } from 'aurelia-http-client';\r\nimport { AdhocReportSubscription } from './contracts/adhoc-report-subscription';\r\nimport { SubscriptionFrequencyType } from './contracts/subscription-frequency-type';\r\n\r\n\r\n@autoinject\r\nexport class AdhocReportSubscriptionService {\r\n private baseRoute: string;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'adhoc-report-subscriptions';\r\n }\r\n\r\n getAdhocReportSubscriptions(): Promise> {\r\n return this.httpClient.get(this.baseRoute) as unknown as Promise<\r\n Readonly\r\n >;\r\n }\r\n\r\n getAdhocReportSubscription(id: number): Promise {\r\n return this.httpClient.get(`${this.baseRoute}/${id}`) as unknown as Promise<\r\n Readonly\r\n >;\r\n }\r\n\r\n createAdhocReportSubscription(\r\n entity: AdhocReportSubscription,\r\n ): Promise {\r\n return this.httpClient.post(\r\n this.baseRoute,\r\n entity,\r\n ) as unknown as Promise;\r\n }\r\n\r\n changeAdhocReportSubscriptionDelivery(\r\n id: number,\r\n request: AdhocReportSubscription,\r\n ): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}`,\r\n request,\r\n ) as unknown as Promise;\r\n }\r\n\r\n startAdhocReportSubscription(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/start`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n stopAdhocReportSubscription(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/stop`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n deleteAdhocReportSubscription(id: number): Promise {\r\n return this.httpClient.delete(\r\n `${this.baseRoute}/${id}`,\r\n ) as unknown as Promise;\r\n }\r\n}\r\n","import moment from 'moment';\r\n\r\nfunction* generateDateRange(startDate, endDate) {\r\n var currentDate = moment(startDate);\r\n\r\n while (currentDate < endDate) {\r\n yield currentDate;\r\n currentDate = moment(currentDate).add(1, 'd');\r\n }\r\n\r\n yield endDate;\r\n}\r\n\r\nexport function createPlaybackFrames(startDate, endDate, dailyResults) {\r\n if (!startDate) throw new Error('The startDate parameter is required.');\r\n\r\n if (!endDate) throw new Error('The endDate parameter is required.');\r\n\r\n var dailyResultGroups = [];\r\n\r\n for (let date of generateDateRange(moment(startDate), moment(endDate)))\r\n dailyResultGroups.push({\r\n sampleCollectionDate: date,\r\n pointResults: {},\r\n });\r\n\r\n if (!dailyResults || dailyResults.length === 0) return dailyResultGroups;\r\n\r\n for (let dailyResult of dailyResults) {\r\n let sampleCollectionDate = moment(dailyResult.sampleCollectionDate);\r\n let dailyResultGroup = dailyResultGroups.find(\r\n (g) => g.sampleCollectionDate.toString() === sampleCollectionDate.toString(),\r\n );\r\n if (dailyResultGroup)\r\n dailyResultGroup.pointResults[dailyResult.pointId] = {\r\n allTestsPassed: dailyResult.allTestsPassed,\r\n anyTestWarned: dailyResult.anyTestWarned,\r\n };\r\n }\r\n\r\n let currentPointResults = null;\r\n for (let [i, dailyResultGroup] of dailyResultGroups.entries()) {\r\n if (currentPointResults)\r\n for (let [pointId, resultInfo] of Object.entries(dailyResultGroup.pointResults))\r\n resultInfo.highlightTransition =\r\n (!currentPointResults[pointId] ||\r\n currentPointResults[pointId].allTestsPassed) &&\r\n !resultInfo.allTestsPassed;\r\n\r\n currentPointResults = dailyResultGroup.pointResults;\r\n }\r\n\r\n return dailyResultGroups;\r\n}\r\n","import { AgPromise, ICellRendererParams } from 'ag-grid-community';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\n\r\nconst template = `\r\n
\r\n \r\n
`;\r\n\r\nexport class AgPlanManagementGridActionRenderer extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(template);\r\n }\r\n\r\n init(params: ICellRendererParams): void | AgPromise {\r\n const { node } = params;\r\n if (node.uiLevel === 0) {\r\n const { childrenAfterGroup } = node;\r\n const groupData = JSON.parse(JSON.stringify(childrenAfterGroup[0].data));\r\n delete groupData.organizationId;\r\n\r\n params['groupData'] = groupData;\r\n } else {\r\n delete params['groupData'];\r\n }\r\n\r\n super.init(params);\r\n }\r\n}\r\n","\r\nimport $ from 'jquery';\r\n\r\nlet dates = $.fn.fdatepicker.dates;\r\n\r\nfunction UTCDate() {\r\n return new Date(Date.UTC.apply(Date, arguments));\r\n}\r\n\r\nexport function parseDate(date, format, language) {\r\n if (date instanceof Date) return new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\r\n format = this.parseFormat('yyyy-mm-dd');\r\n }\r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\r\n format = this.parseFormat('yyyy-mm-dd hh:ii');\r\n }\r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\r\n format = this.parseFormat('yyyy-mm-dd hh:ii:ss');\r\n }\r\n if (/^[-+]\\d+[dmwy]([\\s,]+[-+]\\d+[dmwy])*$/.test(date)) {\r\n let part_re = /([-+]\\d+)([dmwy])/,\r\n parts = date.match(/([-+]\\d+)([dmwy])/g),\r\n part, dir;\r\n date = new Date();\r\n for (var i = 0; i < parts.length; i++) {\r\n part = part_re.exec(parts[i]);\r\n dir = parseInt(part[1]);\r\n switch (part[2]) {\r\n case 'd':\r\n date.setUTCDate(date.getUTCDate() + dir);\r\n break;\r\n case 'm':\r\n date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir);\r\n break;\r\n case 'w':\r\n date.setUTCDate(date.getUTCDate() + dir * 7);\r\n break;\r\n case 'y':\r\n date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir);\r\n break;\r\n }\r\n }\r\n return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n }\r\n let parts = date && date.match(this.nonpunctuation) || [];\r\n date = new Date();\r\n let parsed = {};\r\n let setters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'];\r\n let setters_map = {\r\n hh: function(d, v) {\r\n return d.setUTCHours(v);\r\n },\r\n h: function(d, v) {\r\n return d.setUTCHours(v);\r\n },\r\n ii: function(d, v) {\r\n return d.setUTCMinutes(v);\r\n },\r\n i: function(d, v) {\r\n return d.setUTCMinutes(v);\r\n },\r\n ss: function(d, v) {\r\n return d.setUTCSeconds(v);\r\n },\r\n s: function(d, v) {\r\n return d.setUTCSeconds(v);\r\n },\r\n yyyy: function(d, v) {\r\n return d.setUTCFullYear(v);\r\n },\r\n yy: function(d, v) {\r\n return d.setUTCFullYear(2000 + v);\r\n },\r\n m: function(d, v) {\r\n v -= 1;\r\n while (v < 0) v += 12;\r\n v %= 12;\r\n d.setUTCMonth(v);\r\n while (d.getUTCMonth() != v)\r\n d.setUTCDate(d.getUTCDate() - 1);\r\n return d;\r\n },\r\n d: function(d, v) {\r\n return d.setUTCDate(v);\r\n }\r\n };\r\n \r\n let val, filtered, part;\r\n setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\r\n setters_map['dd'] = setters_map['d'];\r\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); //date.getHours(), date.getMinutes(), date.getSeconds());\r\n if (parts.length == format.parts.length) {\r\n for (let i = 0, cnt = format.parts.length; i < cnt; i++) {\r\n val = parseInt(parts[i], 10);\r\n part = format.parts[i];\r\n if (isNaN(val)) {\r\n switch (part) {\r\n case 'MM':\r\n filtered = $(dates[language].months).filter(function() {\r\n var m = this.slice(0, parts[i].length),\r\n p = parts[i].slice(0, m.length);\r\n return m == p;\r\n });\r\n val = $.inArray(filtered[0], dates[language].months) + 1;\r\n break;\r\n case 'M':\r\n filtered = $(dates[language].monthsShort).filter(function() {\r\n var m = this.slice(0, parts[i].length),\r\n p = parts[i].slice(0, m.length);\r\n return m == p;\r\n });\r\n val = $.inArray(filtered[0], dates[language].monthsShort) + 1;\r\n break;\r\n }\r\n }\r\n\r\n if (part === 'a' && parsed['hh']) {\r\n if (parts[i] == 'AM' && parsed['hh'] === 12)\r\n parsed['hh'] = 0;\r\n\r\n if (parts[i] === 'PM' && parsed['hh'] !== 12)\r\n parsed['hh'] += 12;\r\n }\r\n\r\n parsed[part] = val;\r\n }\r\n for (let i = 0, s; i < setters_order.length; i++) {\r\n s = setters_order[i];\r\n if (s in parsed && !isNaN(parsed[s]))\r\n setters_map[s](date, parsed[s])\r\n }\r\n }\r\n return date;\r\n}\r\n\r\nexport function formatDate(date, format, language) {\r\n if (date == null) {\r\n return ''; //''; //'';\r\n }\r\n var val = {\r\n h: date.getUTCHours(),\r\n i: date.getUTCMinutes(),\r\n s: date.getUTCSeconds(),\r\n d: date.getUTCDate(),\r\n m: date.getUTCMonth() + 1,\r\n M: dates[language].monthsShort[date.getUTCMonth()],\r\n MM: dates[language].months[date.getUTCMonth()],\r\n yy: date.getUTCFullYear().toString().substring(2),\r\n yyyy: date.getUTCFullYear(),\r\n a: date.getUTCHours() >= 12 ? 'PM' : 'AM'\r\n };\r\n\r\n // adjust the date to render w/o military time\r\n if (val.h == 0)\r\n val.hh = 12;\r\n else {\r\n val.hh = (format.parts.includes('a') && val.h > 12) ?\r\n val.h - 12 : \r\n val.h;\r\n val.hh = (val.hh < 10 ? '0' : '') + val.hh;\r\n }\r\n\r\n val.ii = (val.i < 10 ? '0' : '') + val.i;\r\n val.ss = (val.s < 10 ? '0' : '') + val.s;\r\n val.dd = (val.d < 10 ? '0' : '') + val.d;\r\n val.mm = (val.m < 10 ? '0' : '') + val.m;\r\n var dateParts = [],\r\n seps = $.extend([], format.separators);\r\n for (var i = 0, cnt = format.parts.length; i < cnt; i++) {\r\n if (seps.length)\r\n dateParts.push(seps.shift())\r\n \r\n dateParts.push(val[format.parts[i]]);\r\n }\r\n return dateParts.join('');\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class PointAttributeService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getPointAttributes() {\r\n return this.httpClient.get(`location-testing/point-attributes`);\r\n }\r\n\r\n getPointAttributeValues(name) {\r\n return this.httpClient.get(`location-testing/point-attributes/${name}/values`);\r\n }\r\n}\r\n","enum MapDashboardSelectionMode {\r\n SINGLE = 1,\r\n MULTI = 2\r\n}\r\n\r\nexport default MapDashboardSelectionMode;\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\n\r\nexport default class QualitativeResultService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getQualitativeResultTypes() {\r\n\r\n return this\r\n .httpClient\r\n .get(`qualitative-results`);\r\n }\r\n \r\n}\r\n","import CollectionType from 'location-testing/collection-type';\r\nimport { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface CollectionTypeQuery {\r\n collectionTypes: CollectionType[];\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class CollectionTypesQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered\r\n{\r\n collectionTypes: CollectionType[];\r\n\r\n constructor() {\r\n super();\r\n this.collectionTypes = [];\r\n }\r\n\r\n public get count() {\r\n return Number(!!this.collectionTypes?.length);\r\n }\r\n\r\n reset(): void {\r\n this.collectionTypes = [];\r\n }\r\n\r\n getQueryParams(): CollectionTypeQuery {\r\n return {\r\n collectionTypes: this.collectionTypes,\r\n };\r\n }\r\n\r\n setFilterValues(params: CollectionTypeQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const { collectionTypes } = params;\r\n\r\n let collectionTypesArr: CollectionType[];\r\n if (collectionTypes) {\r\n collectionTypesArr = Array.isArray(collectionTypes)\r\n ? collectionTypes\r\n : [collectionTypes];\r\n }\r\n\r\n this.collectionTypes = collectionTypesArr;\r\n }\r\n}\r\n","import { UiViewModel } from 'infrastructure/ui-view-model';\r\nimport { CertificateContact } from './certificate-contact';\r\n\r\nexport class UiCertificateContact implements CertificateContact, UiViewModel {\r\n organizationCode: string;\r\n organizationKey: string;\r\n parentOrganizationKey: string;\r\n companyName: string;\r\n address: string;\r\n city: string;\r\n state: string;\r\n postalCode: string;\r\n country: string;\r\n phoneNumber: string;\r\n faxNumber: string;\r\n contactFullName: string;\r\n contactEmail: string;\r\n\r\n public get fullContact(): string {\r\n let contactParts: string[] = [];\r\n contactParts.push(this.companyName);\r\n if (this.contactFullName) {\r\n contactParts.push(`, ${this.contactFullName}`);\r\n }\r\n if (this.address && this.city && this.state && this.postalCode) {\r\n contactParts.push(`, ${this.address}`);\r\n contactParts.push(`, ${this.city}`);\r\n contactParts.push(`, ${this.state}`);\r\n contactParts.push(`, ${this.postalCode}`);\r\n }\r\n\r\n return contactParts.join('');\r\n }\r\n\r\n toEntity() {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n loadViewFrom(entity: CertificateContact): void {\r\n this.organizationCode = entity.organizationCode;\r\n this.organizationKey = entity.organizationKey;\r\n this.parentOrganizationKey = entity.parentOrganizationKey;\r\n this.companyName = entity.companyName;\r\n this.address = entity.address;\r\n this.city = entity.city;\r\n this.state = entity.state;\r\n this.postalCode = entity.postalCode;\r\n this.country = entity.country;\r\n this.phoneNumber = entity.phoneNumber;\r\n this.faxNumber = entity.faxNumber;\r\n this.contactFullName = entity.contactFullName;\r\n this.contactEmail = entity.contactEmail;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@autoinject\r\nexport default class UserService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getDashboardLinks() {\r\n return this.httpClient.get('dashboard/links');\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport DialogPresenter from './dialogs/dialog-presenter';\r\n\r\n@inject(DialogPresenter)\r\nexport default class FormChangeCheckStep {\r\n constructor(dialogPresenter) {\r\n this.dialogPresenter = dialogPresenter;\r\n }\r\n\r\n run(navigationInstruction, next) {\r\n if (navigationInstruction &&\r\n navigationInstruction.plan &&\r\n navigationInstruction.plan.default &&\r\n navigationInstruction.plan.default.prevComponent &&\r\n navigationInstruction.plan.default.prevComponent.viewModel &&\r\n navigationInstruction.plan.default.prevComponent.viewModel.formChanged\r\n ) {\r\n return this.dialogPresenter\r\n .showLoseChangesConfirmation()\r\n .then(confirmed => {\r\n if (confirmed)\r\n return next();\r\n else\r\n return next.cancel();\r\n });\r\n } else {\r\n return next();\r\n }\r\n }\r\n}\r\n","import { AgPromise, IAfterGuiAttachedParams, ICellEditorParams } from 'ag-grid-community';\r\nimport { Container, View, ViewCompiler } from 'aurelia-framework';\r\nimport { IAureliaCellEditorComp } from './i-aurelia-cell-editor-comp';\r\n\r\nexport abstract class AureliaCellEditorCompBase implements IAureliaCellEditorComp {\r\n container: Container;\r\n viewCompliler: ViewCompiler;\r\n view: View;\r\n rootElement: HTMLElement;\r\n\r\n constructor(template: string) {\r\n this.container = Container.instance;\r\n this.viewCompliler = this.container.get(ViewCompiler);\r\n const viewFactory = this.viewCompliler.compile(``);\r\n this.view = viewFactory.create(this.container);\r\n this.rootElement = document.createElement('div');\r\n }\r\n\r\n init?(params: ICellEditorParams): void | AgPromise {\r\n this.view.bind(params);\r\n this.view.appendNodesTo(this.rootElement);\r\n this.view.attached();\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n return;\r\n }\r\n\r\n getValue() {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n isPopup?(): boolean {\r\n return true;\r\n }\r\n\r\n getPopupPosition?(): string {\r\n return 'over';\r\n }\r\n\r\n isCancelBeforeStart?(): boolean {\r\n return false;\r\n }\r\n\r\n isCancelAfterEnd?(): boolean {\r\n return false;\r\n }\r\n\r\n focusIn?(): void {\r\n return;\r\n }\r\n\r\n focusOut?(): void {\r\n return;\r\n }\r\n\r\n getFrameworkComponentInstance?() {\r\n return;\r\n }\r\n\r\n getGui(): HTMLElement {\r\n return this.rootElement;\r\n }\r\n\r\n destroy?(): void {\r\n this.view.unbind();\r\n this.view.removeNodes();\r\n this.view.detached();\r\n }\r\n}\r\n","export abstract class BaseQueryFilter {\r\n private _defaultSegement = 'Filter';\r\n private _introSegment = 'Viewing';\r\n private _setGlobalFilterDebounce: any;\r\n\r\n private removeUndefinedProperties(obj: any): any {\r\n for (let key in obj) {\r\n if (obj[key] === undefined) {\r\n delete obj[key];\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n public ensureSingleApplyFilterHandler(routeConfig: any): boolean {\r\n const eventLookup =\r\n routeConfig?.navModel?.router?.container?.viewModel?.eventAggregator?.eventLookup;\r\n if (\r\n eventLookup &&\r\n eventLookup['filters.apply'] &&\r\n eventLookup['filters.apply'].length > 1\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected getPersistedFilter(key: string): any {\r\n const filterString = localStorage.getItem(key);\r\n return filterString && filterString.length > 0\r\n ? JSON.parse(filterString)\r\n : null;\r\n }\r\n\r\n protected setPersistedFilter(key: string, obj: any): void {\r\n if (this._setGlobalFilterDebounce) {\r\n clearTimeout(this._setGlobalFilterDebounce);\r\n }\r\n\r\n this._setGlobalFilterDebounce = setTimeout(() => {\r\n this._setGlobalFilterDebounce = null;\r\n localStorage.setItem(key, JSON.stringify(obj));\r\n }, 1000);\r\n }\r\n\r\n protected getFilterCaption(\r\n filterCount: number,\r\n dateRangeFilterProp?: string,\r\n dateRangeOption?: string,\r\n ): string {\r\n const filterCountOnlyCaption = `with ${filterCount} filter${filterCount === 1 ? '' : 's'}.`;\r\n const dateRangeCaption = `${dateRangeFilterProp} for ${dateRangeOption}`;\r\n\r\n if (!dateRangeFilterProp || !dateRangeOption) {\r\n return filterCount > 0\r\n ? `${this._introSegment} ${filterCountOnlyCaption}`\r\n : this._defaultSegement;\r\n }\r\n\r\n return `${this._introSegment} ${dateRangeCaption} ${filterCountOnlyCaption}`;\r\n }\r\n\r\n protected formatSingleOrMultipleOrNothingArray(possibleArray: any) {\r\n if (!possibleArray) {\r\n return null;\r\n }\r\n\r\n return Array.isArray(possibleArray) ? possibleArray : [possibleArray];\r\n }\r\n\r\n protected setQueryFilteredValues(params: any, obj: any): void {\r\n const definedParams = this.removeUndefinedProperties(params);\r\n Object.keys(definedParams).forEach((paramKey) => {\r\n const prop =\r\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj), paramKey) ||\r\n Object.getOwnPropertyDescriptor(obj, paramKey);\r\n if (prop) {\r\n let type: string;\r\n const canSet = !!prop.get && prop.set;\r\n if (canSet) {\r\n const get = prop.get.bind(obj);\r\n const value = get();\r\n type = typeof value;\r\n }\r\n if (prop.value) {\r\n type = typeof prop.value;\r\n }\r\n switch (type) {\r\n case 'boolean':\r\n obj[paramKey] = definedParams[paramKey] === 'true' ? true : false;\r\n break;\r\n case 'number':\r\n obj[paramKey] = Number(definedParams[paramKey]);\r\n break;\r\n default:\r\n obj[paramKey] = definedParams[paramKey];\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","export abstract class OrganizationConfigurationConstants {\r\n static readonly ENABLE_BETA_FEATURES = 'enableBetaFeatures';\r\n static readonly ENABLE_SEGMENT_LOOKUP_MAPPINGS = 'enableSegmentLookupMappings';\r\n}\r\n","export default class LabelTemplateType {\r\n static Unknown = new LabelTemplateType('Unknown');\r\n static Task = new LabelTemplateType('Task');\r\n static Sample = new LabelTemplateType('Sample');\r\n\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n toString() {\r\n return this.name;\r\n }\r\n\r\n static getOptions() {\r\n return [\r\n { title: 'Task', value: LabelTemplateType.Task.name },\r\n { title: 'Sample', value: LabelTemplateType.Sample.name }\r\n ];\r\n }\r\n}\r\n","export default abstract class Validators {\r\n static isValidPostalCode(postalCode: string): boolean {\r\n if (!postalCode) {\r\n return false;\r\n }\r\n\r\n const usFormat = new RegExp(/(^\\d{5}$)|(^\\d{5}-\\d{4}$)/);\r\n const canFormat = new RegExp(\r\n /^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][ -]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/i,\r\n );\r\n if (usFormat.test(postalCode)) {\r\n return true;\r\n }\r\n if (canFormat.test(postalCode)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static areValidEmails(semicolonSeparatedEmails: string): boolean {\r\n if (!semicolonSeparatedEmails) {\r\n return true;\r\n }\r\n\r\n const emailRegex =\r\n /^[a-zA-Z0-9.!#$%&'*+=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n const emailAddresses = semicolonSeparatedEmails.split(/[;,]/);\r\n\r\n return emailAddresses.every((em) => emailRegex.test(em));\r\n }\r\n}\r\n","import { Container } from 'aurelia-framework';\r\nimport { CustomError } from 'infrastructure/custom-error';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\n\r\n// NOTE: Try/Catch does not pick up server side errors.\r\n// TODO: Combine this w/ submitCustomCerificateForm?\r\nfunction handleDownload(blob: Blob, contentDispositionHeader: string) {\r\n const regExpFileName = /filename=(?.*)/;\r\n const fileName: string | null =\r\n regExpFileName.exec(contentDispositionHeader)?.groups?.filename ?? null;\r\n\r\n let a = document.createElement('a');\r\n document.body.appendChild(a);\r\n let url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nfunction parseAndThrowResponse(blob: Blob) {\r\n const dialogPresenter = Container.instance.get(DialogPresenter);\r\n const logger = Container.instance.get(Logger);\r\n blob.text()\r\n .then((b) => {\r\n const data = JSON.parse(b);\r\n const { apiErrorCode, message } = data || {};\r\n throw new CustomError(message, apiErrorCode);\r\n })\r\n .catch((e: CustomError) => {\r\n const { errorCode } = e;\r\n logger.error(\r\n 'Error downloading report',\r\n 'A server side error occured while trying to download a report',\r\n );\r\n\r\n const errorMessage =\r\n errorCode && errorCode === 705\r\n ? 'The maximum number of rows supported by this version of Excel is 65536. Please adjust the parameters in order to return fewer results.'\r\n : 'An unexpected error occured. Please try again or contact support.';\r\n dialogPresenter.showAlert('Error Downloading Report', errorMessage);\r\n });\r\n}\r\n\r\nexport async function downloadSsrsReport(downloadUrl: string, postObject: any = null) {\r\n const pageContext = Container.instance.get(PageContext);\r\n\r\n pageContext.isLoading = true;\r\n\r\n const xhr = new XMLHttpRequest();\r\n xhr.responseType = 'blob';\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n const type = xhr.getResponseHeader('Content-Type');\r\n const contentDispositionHeader = xhr.getResponseHeader('Content-Disposition');\r\n const blob = new Blob([xhr.response], { type });\r\n\r\n pageContext.isLoading = false;\r\n if (xhr.status === 200) {\r\n handleDownload(blob, contentDispositionHeader);\r\n\r\n return;\r\n }\r\n parseAndThrowResponse(blob);\r\n }\r\n };\r\n\r\n if (postObject !== null) {\r\n xhr.open('POST', downloadUrl, true);\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n xhr.send(JSON.stringify(postObject));\r\n } else {\r\n xhr.open('GET', downloadUrl, true);\r\n xhr.send();\r\n }\r\n}\r\n","import { AgPromise, ICellRendererParams } from 'ag-grid-community';\r\nimport marked from 'marked';\r\nimport { AureliaCellRendererCompBase } from './aurelia-cell-renderer-comp-base';\r\n\r\n//TODO: Refactor to support custom property name. (data.*)\r\nconst markedTemplate = '
';\r\nclass AgMarkedCellRenderer extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(markedTemplate);\r\n }\r\n\r\n init(params: ICellRendererParams): void | AgPromise {\r\n params['marked'] = marked;\r\n\r\n super.init(params);\r\n }\r\n}\r\n\r\nexport { AgMarkedCellRenderer };\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport { DashboardQuery } from 'dashboard/dashboard-query-filters';\r\nimport moment from 'moment';\r\nimport 'moment-timezone';\r\nimport Task from './task';\r\nimport { TaskCounts } from './task-counts';\r\nimport { TaskManagementCounts } from './task-management-counts';\r\n\r\n@autoinject\r\nexport default class TaskService {\r\n ianaTimeZone: any;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.ianaTimeZone = (moment as any).tz.guess();\r\n }\r\n\r\n getTasks(taskFilters, view, includePlan?: boolean) {\r\n var queryParameters = taskFilters;\r\n queryParameters.view = view;\r\n queryParameters.includePlan = includePlan;\r\n\r\n var query = buildQueryString(queryParameters, true);\r\n\r\n return this.httpClient.get(`location-testing/tasks${(query ? `?${query}` : '')}`);\r\n }\r\n\r\n getTask(id, includePlan?: boolean) {\r\n return this.httpClient.get(`location-testing/tasks/${id}${(includePlan ? '?includePlan=true' : '')}`);\r\n }\r\n\r\n getTaskStatuses() {\r\n return [\r\n { id: 1, code: 'NotStarted', name: 'Not Started' },\r\n { id: 2, code: 'InProgress', name: 'In Progress' },\r\n { id: 3, code: 'Completed', name: 'Completed' },\r\n { id: 4, code: 'DidNotComplete', name: 'Did Not Complete' },\r\n ];\r\n }\r\n\r\n toBatches(items: T[], batchSize) {\r\n var copiedItems = [...items];\r\n var batches: T[][] = [];\r\n\r\n while (copiedItems.length)\r\n batches.push(copiedItems.splice(0, batchSize));\r\n\r\n return batches;\r\n }\r\n\r\n deleteTasks(ids: number[]) {\r\n var idBatches = this.toBatches(ids, 200);\r\n return Promise.all(idBatches.map(ids => {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`location-testing/tasks?${query}`);\r\n }));\r\n }\r\n\r\n async batchUpdateTasks(action, ids: number[], additionalParameters = {}) {\r\n var idBatches = this.toBatches(ids, 200);\r\n var results = await Promise.all(idBatches.map(ids => {\r\n var data = { ids, ...additionalParameters };\r\n return this.httpClient.put(`location-testing/tasks/batch?action=${action}`, data) as any as any[];\r\n }));\r\n\r\n var flattenedResults = [];\r\n for (let result of results)\r\n flattenedResults.push(...result);\r\n\r\n return flattenedResults;\r\n }\r\n\r\n assignTasks(ids: number[], assignedUserId) {\r\n return this.batchUpdateTasks('assign', ids, { assignedUserId });\r\n }\r\n\r\n unassignTasks(ids: number[]) {\r\n return this.batchUpdateTasks('unassign', ids);\r\n }\r\n\r\n updateTaskStatus(ids: number[], statusId, collectedDateTime, comments) {\r\n return this.batchUpdateTasks('update-status', ids, { statusId, collectedDateTime, comments });\r\n }\r\n\r\n getTaskCounts(dashboardQuery: DashboardQuery): Promise {\r\n const query = buildQueryString(dashboardQuery, true);\r\n return this.httpClient.get(`location-testing/task-counts/${(query ? `?${query}` : '')}`) as unknown as Promise;\r\n }\r\n\r\n getCriticalTaskCounts(organizationIds) {\r\n var query = buildQueryString({\r\n // Map organization IDs to multiple 'organizationId' query string variables.\r\n organizationId: organizationIds\r\n }, true);\r\n return this.httpClient.get(`location-testing/task-counts/critical${(query ? `?${query}` : '')}`);\r\n }\r\n\r\n getTaskManagementCounts(query: {\r\n organizationIds?: number[];\r\n mapIds?: number[];\r\n planIds?: number[];\r\n targetStartDate?: string;\r\n targetEndDate?: string;\r\n }): Promise {\r\n const queryString = buildQueryString(query, true);\r\n return this.httpClient.get(`location-testing/task-counts/overview${(queryString ? `?${queryString}` : '')}`) as unknown as Promise;\r\n }\r\n\r\n saveTask(task) {\r\n if (!task.id)\r\n return this.httpClient.post('location-testing/tasks', task);\r\n\r\n return this.httpClient.put(`location-testing/tasks/${task.id}`, task);\r\n }\r\n\r\n createTasks(tasks: Task[]) {\r\n return this.httpClient.post('location-testing/tasks/bulk', tasks);\r\n }\r\n\r\n getTaskRecordChanges(id) {\r\n return this.httpClient.get(`location-testing/tasks/${id}/record-changes`);\r\n }\r\n\r\n printLabels(taskIds, printerId) {\r\n var request = {\r\n ids: taskIds,\r\n printerId: printerId,\r\n ianaTimeZone: this.ianaTimeZone\r\n }\r\n\r\n return this.httpClient.post('location-testing/tasks/print-labels/', request);\r\n }\r\n\r\n exportLabelsCsv(taskIds, fields) {\r\n function capitalizeFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n }\r\n\r\n let selectedFields = [];\r\n fields.forEach(f => selectedFields.push(capitalizeFirstLetter(f)));\r\n\r\n var request = {\r\n ids: taskIds,\r\n selectedFields: selectedFields,\r\n ianaTimeZone: this.ianaTimeZone\r\n }\r\n\r\n var query = buildQueryString(request, true);\r\n\r\n return this.httpClient.get(`location-testing/tasks/export-labels-csv${(query ? `?${query}` : '')}`);\r\n }\r\n\r\n getExportableLabelsCsvFields(taskIds) {\r\n var request = {\r\n ids: taskIds\r\n }\r\n\r\n var query = buildQueryString(request, true);\r\n\r\n return this.httpClient.get(`location-testing/tasks/export-labels-csv?fields=true${(query ? `&${query}` : '')}`);\r\n }\r\n\r\n getTaskLabelPdfUrl(taskIds, labelTemplateId) {\r\n var query = buildQueryString({\r\n taskIds: taskIds,\r\n labelTemplateId,\r\n ianaTimeZone: this.ianaTimeZone\r\n }, true);\r\n return `api/location-testing/tasks/labels-pdf${(query ? `?${query}` : '')}`;\r\n }\r\n\r\n getExporTaskCollectionTemplate(\r\n taskIds: number[],\r\n exportTaskCollectionTemplateId: number,\r\n exportTaskCollectionTemplateName: string) {\r\n const queryString = buildQueryString(\r\n { \r\n taskIds, \r\n exportTaskCollectionTemplateId, \r\n exportTaskCollectionTemplateName,\r\n ianaTimeZone: this.ianaTimeZone\r\n }, true);\r\n\r\n return `api/location-testing/tasks/export-task-collection-template?${queryString}`;\r\n }\r\n}\r\n","import {\r\n CellClassParams,\r\n CellValueChangedEvent,\r\n ColDef,\r\n EditableCallbackParams,\r\n ICellEditorParams,\r\n IRichCellEditorParams,\r\n ValueGetterParams,\r\n ValueSetterParams,\r\n} from 'ag-grid-community';\r\nimport { CustomError } from 'infrastructure/custom-error';\r\nimport DateUtility from 'infrastructure/date-utility.js';\r\nimport LvOrganizationSampleTemplate from 'lab-vantage/lv-organization-sample-type';\r\nimport LvTestTemplate from 'lab-vantage/lv-test-template';\r\nimport moment from 'moment';\r\nimport {\r\n defaultCompositeOptionsV2,\r\n internalCompositeOptionsV2,\r\n} from 'requests/sample-composite-options';\r\nimport SegmentLookup from 'segmentation-templates/segment-lookup';\r\nimport SegmentationTemplate from 'segmentation-templates/segmentation-template';\r\nimport SegmentationTemplateSegment from 'segmentation-templates/segmentation-template-segment';\r\nimport { AgDateMaskEditor } from './ag-grid-components/ag-datemask-editor';\r\nimport { AgDatePickerEditor } from './ag-grid-components/ag-datepicker-editor';\r\nimport { AgDateTimeEditorTypes } from './ag-grid-components/ag-datetime-editor-types';\r\nimport { SampleSegmentationGridPreferences } from './ag-grid-components/sample-segmentation-grid-preferences';\r\nimport SegmentationSampleGridColDataFactory from './sample-segmentation-grid-col-data-factory';\r\n\r\nconst segmentColdId = (segment: SegmentationTemplateSegment): string =>\r\n `segment_${segment.name}_${segment.segmentationTemplateId}`;\r\n\r\nconst getMatchingLookupValue = (segmentLookups: SegmentLookup[], segmentName: string): string => {\r\n const matchingLookup = segmentLookups.find((sl) => sl.parent === segmentName);\r\n if (!matchingLookup) {\r\n throw new CustomError(`No matching lookup for ${segmentName} was found.`, 2);\r\n }\r\n\r\n return matchingLookup.child;\r\n};\r\n\r\nconst formatTestMethodNames = (lvTestTemplates: LvTestTemplate[]): string => {\r\n return lvTestTemplates.map((tt) => `${tt.testMethod.code}`).join(', ');\r\n};\r\n\r\nconst createLookupTypeSegmentationColumns = (\r\n parentSegment: SegmentationTemplateSegment,\r\n childSegment: SegmentationTemplateSegment,\r\n isEditable: boolean,\r\n): ColDef[] => {\r\n const parentSegmentValues = JSON.parse(parentSegment.values) as string[];\r\n const childSegmentLookupValues = JSON.parse(childSegment.values) as SegmentLookup[];\r\n\r\n if (parentSegment.parentSegmentId || !parentSegmentValues.length) {\r\n throw new CustomError('A lookup segmentation template column requires a valid parent', 1);\r\n }\r\n if (!childSegment.parentSegmentId || !childSegmentLookupValues.length) {\r\n throw new CustomError('A lookup segmentation template col requires a valid child', 1);\r\n }\r\n\r\n const colDefs: ColDef[] = [];\r\n\r\n const parentColDef: ColDef = {\r\n colId: segmentColdId(parentSegment),\r\n headerName: parentSegment.name,\r\n editable: (params: EditableCallbackParams | CellClassParams) =>\r\n parentSegment.segmentationTemplateId === params.data.segmentationTemplateId &&\r\n isEditable,\r\n cellEditor: 'agRichSelectCellEditor',\r\n cellEditorPopup: true,\r\n cellEditorParams: {\r\n values: parentSegmentValues,\r\n },\r\n valueGetter: (params) =>\r\n params.data.segments ? params.data.segments[parentSegment.name] : null,\r\n valueSetter: (params) => {\r\n const { newValue } = params;\r\n const childValue = getMatchingLookupValue(\r\n childSegmentLookupValues,\r\n newValue.toString(),\r\n );\r\n\r\n params.data.segments[parentSegment.name] = newValue.toString();\r\n params.data.segments[childSegment.name] = childValue.toString();\r\n\r\n return true;\r\n },\r\n cellClassRules: {\r\n 'disabled-cell': (params) =>\r\n parentSegment.segmentationTemplateId !== params.data.segmentationTemplateId,\r\n 'segmentation-parent-cell': () => true,\r\n },\r\n };\r\n const childColDef: ColDef = {\r\n colId: segmentColdId(childSegment),\r\n headerName: childSegment.name,\r\n editable: (params: EditableCallbackParams | CellClassParams) =>\r\n childSegment.segmentationTemplateId === params.data.segmentationTemplateId &&\r\n isEditable,\r\n valueGetter: (params) =>\r\n params.data.segments ? params.data.segments[childSegment.name] : null,\r\n valueSetter: (params) => {\r\n params.data.segments[childSegment.name] = params.newValue.toString();\r\n\r\n return true;\r\n },\r\n cellClassRules: {\r\n 'disabled-cell': (params) =>\r\n childSegment.segmentationTemplateId !== params.data.segmentationTemplateId,\r\n 'segmentation-child-cell': () => true,\r\n },\r\n };\r\n\r\n colDefs.push(parentColDef);\r\n colDefs.push(childColDef);\r\n\r\n return colDefs;\r\n};\r\n\r\nconst createNonLookupTypeSegmentationColumns = (\r\n segmentationTemplates: SegmentationTemplate[],\r\n isEditable: boolean,\r\n): ColDef[] => {\r\n const colDefs: ColDef[] = [];\r\n segmentationTemplates.forEach((st) => {\r\n st?.segments.forEach((segment: SegmentationTemplateSegment) => {\r\n const colDef: ColDef = {\r\n colId: segmentColdId(segment),\r\n headerName: segment.name,\r\n editable: (params: EditableCallbackParams) =>\r\n st.id === params.data.segmentationTemplateId && isEditable,\r\n cellEditorPopup: true,\r\n valueGetter: (params: ValueGetterParams) => {\r\n return st.id === params.data.segmentationTemplateId\r\n ? params.data.segments\r\n ? params.data.segments[segment.name]\r\n : null\r\n : null;\r\n },\r\n valueSetter: (params) => {\r\n if (st.id !== params.data.segmentationTemplateId) {\r\n return false;\r\n }\r\n\r\n params.data.segments[segment.name] = params.newValue.toString();\r\n return true;\r\n },\r\n cellClassRules: {\r\n 'disabled-cell': (params) => st.id !== params.data.segmentationTemplateId,\r\n },\r\n };\r\n\r\n colDefs.push(colDef);\r\n });\r\n });\r\n\r\n return colDefs;\r\n};\r\n\r\nexport class SegmentationSampleGridColBuilder {\r\n private _colDataFactory: SegmentationSampleGridColDataFactory;\r\n private _colDefs: ColDef[];\r\n\r\n constructor(colDataFactory: SegmentationSampleGridColDataFactory) {\r\n this._colDataFactory = colDataFactory;\r\n this._colDefs = [];\r\n }\r\n\r\n public get colDefs(): ColDef[] {\r\n return this._colDefs;\r\n }\r\n\r\n public addSampleTemplateCol(\r\n lvOrganizationSampleTemplates: LvOrganizationSampleTemplate[],\r\n isEditable: boolean,\r\n ) {\r\n const indexedValues = new Map(\r\n lvOrganizationSampleTemplates?.map((o) => [o.sampleTypeId, o.description]),\r\n );\r\n\r\n const col: ColDef = {\r\n headerName: 'Sample Template',\r\n colId: 'sample_template',\r\n headerCheckboxSelection: true,\r\n headerCheckboxSelectionFilteredOnly: true,\r\n checkboxSelection: true,\r\n editable: isEditable,\r\n cellEditor: 'agRichSelectCellEditor',\r\n cellEditorPopup: true,\r\n cellEditorParams: {\r\n values: [...indexedValues.values()],\r\n } as IRichCellEditorParams,\r\n valueGetter: (params: ValueGetterParams) => indexedValues.get(params.data.sampleTypeId),\r\n valueSetter: (params: ValueSetterParams) => {\r\n indexedValues.forEach((v, k) => {\r\n if (v === params.newValue) {\r\n params.data.sampleTypeId = k;\r\n }\r\n });\r\n\r\n return true;\r\n },\r\n cellClassRules: {\r\n 'invalid-cell': (params) => !params.data.sampleTypeId,\r\n },\r\n };\r\n\r\n this._colDefs.push(col);\r\n\r\n return this;\r\n }\r\n\r\n public addCollectionDateCol(isEditable: boolean) {\r\n const dateFormat = 'MM/DD/YYYY HH:mm A';\r\n const minCollectionDate = new Date(1950, 0, 1);\r\n const maxCollectionDate = moment(new Date()).startOf('day').add(2, 'days').toDate();\r\n const col: ColDef = {\r\n headerName: 'Collection Date',\r\n colId: 'collection_date',\r\n editable: isEditable,\r\n cellEditorPopup: true,\r\n valueGetter: (params) => DateUtility.toView(params.data.collectionDate),\r\n valueSetter: (params) => {\r\n let date = moment(params.newValue, dateFormat);\r\n params.data.collectionDate = date.isBetween(minCollectionDate, maxCollectionDate)\r\n ? date.toDate()\r\n : null;\r\n\r\n return true;\r\n },\r\n cellEditorParams: {\r\n maxCollectionDate,\r\n },\r\n cellEditorSelector: (params: ICellEditorParams) => {\r\n const { context } = params;\r\n const { preferences }: { preferences: SampleSegmentationGridPreferences } = context;\r\n\r\n return {\r\n component:\r\n preferences.dateTimeEditor === AgDateTimeEditorTypes.PICKER\r\n ? AgDatePickerEditor\r\n : AgDateMaskEditor,\r\n };\r\n },\r\n cellClassRules: {\r\n 'invalid-cell': (params) => !params.data.collectionDate,\r\n },\r\n };\r\n\r\n this.colDefs.push(col);\r\n\r\n return this;\r\n }\r\n\r\n public addSegmentationTemplateCol(isEditable: boolean) {\r\n const col: ColDef = {\r\n headerName: 'Segmentation Template',\r\n colId: 'segmentation_template',\r\n editable: isEditable,\r\n cellEditor: 'agRichSelectCellEditor',\r\n cellEditorPopup: true,\r\n cellEditorParams: {\r\n values: [\r\n ...this._colDataFactory.segmentationTemplateSelectorOptions.map((x) => x.title),\r\n ],\r\n } as IRichCellEditorParams,\r\n valueGetter: (params: ValueGetterParams) => {\r\n const selectorOption =\r\n this._colDataFactory.segmentationTemplateSelectorOptions.find(\r\n (x) => x.value === params.data.segmentationTemplateId,\r\n );\r\n\r\n return selectorOption?.value && Number(selectorOption?.value) > 0\r\n ? selectorOption.title\r\n : null;\r\n },\r\n valueSetter: (params: ValueSetterParams) => {\r\n const templateName = params.newValue;\r\n\r\n const segmentationTemplate =\r\n this._colDataFactory.getSegmentationTemplateByName(templateName);\r\n const segmentationTemplateId = segmentationTemplate?.id;\r\n\r\n const newSegments = {};\r\n segmentationTemplate?.segments.forEach((s) => (newSegments[s.name] = null));\r\n\r\n params.data.segmentationTemplateId = segmentationTemplateId;\r\n params.data.segments = newSegments;\r\n\r\n if (segmentationTemplateId) {\r\n params.data.description = null;\r\n }\r\n\r\n return true;\r\n },\r\n onCellValueChanged: (event: CellValueChangedEvent) => {\r\n const { oldValue, newValue, api } = event;\r\n if (oldValue === newValue) {\r\n return;\r\n }\r\n\r\n const oldSegmentationTemplate =\r\n this._colDataFactory.getSegmentationTemplateByName(oldValue);\r\n const newSegmentationTemplate =\r\n this._colDataFactory.getSegmentationTemplateByName(newValue);\r\n const oldSegmentationTemplateId = oldSegmentationTemplate?.id;\r\n const newSegmentationTemplateId = newSegmentationTemplate?.id;\r\n\r\n const currColDefs = api.getColumnDefs();\r\n const updatedColDefs: ColDef[] = this.removeUnusedSegmentationCols(\r\n oldSegmentationTemplateId,\r\n currColDefs,\r\n );\r\n\r\n const newColDefs: ColDef[] = this.createNewSegmentationCols(\r\n newSegmentationTemplateId,\r\n currColDefs,\r\n isEditable,\r\n );\r\n\r\n updatedColDefs.splice(updatedColDefs.length - 3, 0, ...newColDefs);\r\n api.setColumnDefs(updatedColDefs);\r\n },\r\n };\r\n\r\n this.colDefs.push(col);\r\n\r\n return this;\r\n }\r\n\r\n public addDescriptionCol(isEditable: boolean) {\r\n const colDef: ColDef = {\r\n headerName: 'Sample Description',\r\n field: 'description',\r\n editable: (params: EditableCallbackParams | CellClassParams) =>\r\n !params.data.segmentationTemplateId && isEditable,\r\n cellEditor: 'agLargeTextCellEditor',\r\n cellEditorPopup: true,\r\n cellEditorParams: {\r\n maxLength: 265,\r\n rows: 10,\r\n cols: 50,\r\n },\r\n cellClassRules: {\r\n 'disabled-cell': (params) => params.data.segmentationTemplateId,\r\n 'invalid-cell': (params) =>\r\n !params.data.segmentationTemplateId && !params.data.description,\r\n },\r\n };\r\n\r\n this.colDefs.push(colDef);\r\n\r\n return this;\r\n }\r\n\r\n public addLookupCols(areEditable: boolean) {\r\n for (let key in this._colDataFactory.groupedLookupSegmentationTemplates) {\r\n this._colDefs.push(\r\n ...createLookupTypeSegmentationColumns(\r\n this._colDataFactory.lookupParentSegment(key),\r\n this._colDataFactory.lookupChildSegment(key),\r\n areEditable,\r\n ),\r\n );\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public addNonLookupCols(areEditable: boolean) {\r\n this._colDefs.push(\r\n ...createNonLookupTypeSegmentationColumns(\r\n this._colDataFactory.nonLookupSegmentationTemplates,\r\n areEditable,\r\n ),\r\n );\r\n\r\n return this;\r\n }\r\n\r\n public addLastCols(\r\n lvOrganizationSampleTemplates: LvOrganizationSampleTemplate[],\r\n areEditable: boolean,\r\n allowInternalCompositing: boolean,\r\n ) {\r\n const compositeValues = allowInternalCompositing\r\n ? [...defaultCompositeOptionsV2, ...internalCompositeOptionsV2]\r\n : defaultCompositeOptionsV2;\r\n const lastCols: ColDef[] = [\r\n {\r\n headerName: 'Composite',\r\n field: 'composite',\r\n editable: areEditable,\r\n cellEditor: 'agRichSelectCellEditor',\r\n cellEditorPopup: true,\r\n cellEditorParams: {\r\n values: compositeValues,\r\n } as IRichCellEditorParams,\r\n },\r\n {\r\n headerName: 'Test Methods',\r\n editable: false,\r\n valueGetter: (params: ValueGetterParams) => {\r\n const sampleTemplate = lvOrganizationSampleTemplates?.find(\r\n (st) => st.sampleTypeId === params.data.sampleTypeId,\r\n );\r\n\r\n return sampleTemplate\r\n ? formatTestMethodNames(sampleTemplate.testTemplates)\r\n : null;\r\n },\r\n },\r\n ];\r\n\r\n this.colDefs.push(...lastCols);\r\n\r\n return this;\r\n }\r\n\r\n private removeUnusedSegmentationCols(\r\n segmentationTemplateId: number,\r\n currColDefs: ColDef[],\r\n ): ColDef[] {\r\n const oldValueSampleSegments = this._colDataFactory.samples.find(\r\n (s) => s.segmentationTemplateId === segmentationTemplateId,\r\n )?.segments;\r\n\r\n if (oldValueSampleSegments && Object.keys(oldValueSampleSegments).length) {\r\n return currColDefs;\r\n }\r\n const oldValueColIds = this._colDataFactory\r\n .getSegmentationTemplateById(segmentationTemplateId)\r\n ?.segments.map((ss) => segmentColdId(ss));\r\n\r\n return currColDefs.filter((cd) => !oldValueColIds?.includes(cd['colId']));\r\n }\r\n\r\n private createNewSegmentationCols(\r\n segmentationTemplateId: number,\r\n currColDefs: ColDef[],\r\n areEditable: boolean,\r\n ): ColDef[] {\r\n if (!segmentationTemplateId) {\r\n return [];\r\n }\r\n\r\n const newColDefExists = currColDefs.find((x) =>\r\n x['colId'].endsWith(`_${segmentationTemplateId}`),\r\n );\r\n\r\n if (newColDefExists) {\r\n return [];\r\n }\r\n\r\n const newColDefs: ColDef[] = [];\r\n const lookupSegments =\r\n this._colDataFactory.getLookupSegmentationTemplateById(segmentationTemplateId);\r\n const nonLookupSegments =\r\n this._colDataFactory.getNonLookupSegmentationTemplateById(segmentationTemplateId);\r\n\r\n if (lookupSegments && lookupSegments.segments.length) {\r\n const groups = this._colDataFactory.groupLookupSegments(lookupSegments.segments);\r\n for (let g in groups) {\r\n const parent = this._colDataFactory.lookupParentSegment(g, groups);\r\n const child = this._colDataFactory.lookupChildSegment(g, groups);\r\n newColDefs.push(...createLookupTypeSegmentationColumns(parent, child, areEditable));\r\n }\r\n }\r\n\r\n if (nonLookupSegments && nonLookupSegments.segments.length) {\r\n newColDefs.push(\r\n ...createNonLookupTypeSegmentationColumns([nonLookupSegments], areEditable),\r\n );\r\n }\r\n\r\n return newColDefs;\r\n }\r\n}\r\n\r\nexport {\r\n SegmentationSampleGridColDataFactory,\r\n createLookupTypeSegmentationColumns,\r\n createNonLookupTypeSegmentationColumns,\r\n};\r\n","export default class SrtingUtility {\r\n /**\r\n *\r\n * @param {Number} [length='random between 5 and 10'] - Length of string to generate.\r\n * @returns {string} - A random string with the length specified.\r\n */\r\n static getRandomString(length = Math.floor(Math.random() * 6) + 5) {\r\n var value = '';\r\n var chars = 'abcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n for (var i = 0; i < length; i++)\r\n value += chars[Math.floor(Math.random() * chars.length)];\r\n\r\n return value;\r\n }\r\n};\r\n","import { UiViewModel } from 'infrastructure/ui-view-model';\r\nimport Schedule from 'location-testing/plans/schedule';\r\nimport moment from 'moment';\r\nimport TargetCollectionTimes from './target-collection-times';\r\nimport TaskDistributionMethod from './task-distribution-method';\r\n\r\n\r\nexport default class UiSchedule implements Schedule, UiViewModel {\r\n private _startDate: string;\r\n private _startDateView: Date;\r\n private _endDate: string;\r\n private _endDateView: Date;\r\n private _blackoutDates: string[];\r\n private _blackoutDatesView: Date[];\r\n private _scheduleMinDate: Date;\r\n\r\n cycleDurationDays: number;\r\n targetCollectionTimes: TargetCollectionTimes[];\r\n skipDays: number;\r\n taskDistributionMethod: string;\r\n blackoutSundays: boolean;\r\n blackoutMondays: boolean;\r\n blackoutTuesdays: boolean;\r\n blackoutWednesdays: boolean;\r\n blackoutThursdays: boolean;\r\n blackoutFridays: boolean;\r\n blackoutSaturdays: boolean;\r\n timeZone: string;\r\n\r\n constructor() {\r\n this.taskDistributionMethod = TaskDistributionMethod.WEEK_BASED;\r\n this.skipDays = 0;\r\n this.targetCollectionTimes = [];\r\n this.timeZone = 'Pacific Standard Time';\r\n this._blackoutDates = [];\r\n this._blackoutDatesView = [];\r\n\r\n this.startDateView = new Date();\r\n this._scheduleMinDate = this.getTwentyFourHoursAgoDate();\r\n }\r\n\r\n public get startDate() {\r\n return this._startDate;\r\n }\r\n\r\n public set startDate(startDate: string) {\r\n this._startDate = startDate;\r\n if (startDate) {\r\n this._startDateView = new Date(startDate);\r\n }\r\n }\r\n\r\n public get startDateView() {\r\n return this._startDateView;\r\n }\r\n\r\n public set startDateView(startDateView: Date) {\r\n this._startDateView = startDateView;\r\n this._startDate = moment(startDateView).format('YYYY-MM-DD');\r\n }\r\n\r\n public get endDate() {\r\n return this._endDate;\r\n }\r\n\r\n public set endDate(endDate: string) {\r\n this._endDate = endDate;\r\n if (endDate) {\r\n this._endDateView = new Date(endDate);\r\n }\r\n }\r\n\r\n public get endDateView() {\r\n return this._endDateView;\r\n }\r\n\r\n public set endDateView(endDateView: Date) {\r\n this._endDateView = endDateView;\r\n this._endDate = moment(endDateView).format('YYYY-MM-DD');\r\n }\r\n\r\n public get blackoutDates() {\r\n return this._blackoutDates;\r\n }\r\n\r\n public set blackoutDates(blackoutDates: string[]) {\r\n this._blackoutDates = blackoutDates;\r\n if (blackoutDates?.length) {\r\n this._blackoutDatesView = blackoutDates.map(d => new Date(`${d}${d.endsWith('Z') ? '' : 'Z'}`));\r\n }\r\n }\r\n\r\n public get blackoutDatesView() {\r\n return this._blackoutDatesView;\r\n }\r\n\r\n public set blackoutDatesView(blackoutDatesView: Date[]) {\r\n this._blackoutDatesView = blackoutDatesView;\r\n if (blackoutDatesView?.length) {\r\n this._blackoutDates = blackoutDatesView.map(d => moment(d).format('YYYY-MM-DD'));\r\n }\r\n }\r\n\r\n public get scheduleMinDate(): Date {\r\n return this._scheduleMinDate;\r\n }\r\n\r\n toEntity(): any {\r\n let schedule = {};\r\n Object.keys(this).forEach(k => {\r\n if (k.charAt(0) !== '_') {\r\n schedule[k] = this[k];\r\n }\r\n });\r\n\r\n schedule['startDate'] = this.startDate;\r\n schedule['endDate'] = this.endDate;\r\n schedule['blackoutDates'] = this.blackoutDates;\r\n\r\n return schedule;\r\n }\r\n\r\n loadViewFrom(entity: any): void {\r\n if (!entity) {\r\n return;\r\n }\r\n this.timeZone = entity.timeZone;\r\n this.startDate = entity.startDate;\r\n this.endDate = entity.endDate;\r\n this.cycleDurationDays = entity.cycleDurationDays;\r\n this.targetCollectionTimes = entity.targetCollectionTimes;\r\n this.skipDays = entity.skipDays;\r\n this.blackoutDates = entity.blackoutDates;\r\n this.taskDistributionMethod = entity.taskDistributionMethod;\r\n this.blackoutSundays = entity.blackoutSundays;\r\n this.blackoutMondays = entity.blackoutMondays;\r\n this.blackoutTuesdays = entity.blackoutTuesdays;\r\n this.blackoutWednesdays = entity.blackoutWednesdays;\r\n this.blackoutThursdays = entity.blackoutThursdays;\r\n this.blackoutFridays = entity.blackoutFridays;\r\n this.blackoutSaturdays = entity.blackoutSaturdays;\r\n }\r\n\r\n private getTwentyFourHoursAgoDate(): Date {\r\n let today = new Date();\r\n let yesterdayDate = new Date();\r\n yesterdayDate.setDate(today.getDate() - 1);\r\n\r\n return yesterdayDate;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport CoAReportStyle from './coa-report-style';\r\n\r\n@autoinject\r\nexport default class CoAReportStyleService {\r\n httpClient: HttpClient;\r\n\r\n constructor(httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n async getCoAReportStyles(): Promise {\r\n let coaReportStyles = await this.httpClient.get('coa-report-styles');\r\n return coaReportStyles as unknown as CoAReportStyle[];\r\n }\r\n\r\n async getCoAReportStyleOptions(coaReportStyles: CoAReportStyle[] = null): Promise {\r\n let reportStyles = (coaReportStyles === null) ? await this.getCoAReportStyles() : coaReportStyles;\r\n\r\n return reportStyles.map(rs => ({\r\n title: rs.id,\r\n value: rs.id\r\n }));\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport RecordStatus from 'record-status';\r\nimport { PointTestHistory } from './point-test-history';\r\n\r\n@autoinject\r\nexport default class RemediationService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n getRemediations(remediationFilters, view?: string, recordStatus?: RecordStatus) {\r\n var queryParameters = remediationFilters;\r\n\r\n if (view) queryParameters.view = view;\r\n\r\n if (recordStatus) queryParameters.recordStatus = recordStatus;\r\n\r\n var query = buildQueryString(queryParameters, true);\r\n\r\n return this.httpClient.get(`location-testing/remediations${query ? `?${query}` : ''}`);\r\n }\r\n\r\n getRemediation(id) {\r\n return this.httpClient.get(`location-testing/remediations/${id}`);\r\n }\r\n\r\n deleteRemediations(ids) {\r\n var query = ids.map((id) => `id=${id}`).join('&');\r\n return this.httpClient.delete(`location-testing/remediations?${query}`);\r\n }\r\n\r\n reassignRemediations(ids: number[], assignedUserId: number) {\r\n return this.httpClient.put('location-testing/remediations/reassign', { ids, assignedUserId });\r\n }\r\n\r\n getRemediationCounts(organizationIds, assignedToMe) {\r\n var query = buildQueryString(\r\n {\r\n // Map organization IDs to multiple 'organizationId' query string variables.\r\n organizationId: organizationIds,\r\n assignedToMe: !!assignedToMe,\r\n },\r\n true,\r\n );\r\n return this.httpClient.get(\r\n `location-testing/remediation-counts/${query ? `?${query}` : ''}`,\r\n );\r\n }\r\n\r\n saveRemediation(remediation) {\r\n if (!remediation.id)\r\n return this.httpClient.post('location-testing/remediations', remediation);\r\n\r\n return this.httpClient.put(`location-testing/remediations/${remediation.id}`, remediation);\r\n }\r\n\r\n getRemediationStatuses() {\r\n return [\r\n { id: 1, code: 'NotStarted', name: 'Not Started' },\r\n { id: 2, code: 'InProgress', name: 'In Progress' },\r\n { id: 3, code: 'Completed', name: 'Completed' },\r\n { id: 4, code: 'Reviewed', name: 'Reviewed' },\r\n { id: 5, code: 'Rejected', name: 'Rejected' },\r\n ];\r\n }\r\n\r\n saveRemediationFile(remediationFileDetails, remediationFile) {\r\n if (!remediationFileDetails.remediationId)\r\n throw 'Remediation must be saved before creating a file.';\r\n\r\n const formData = new FormData();\r\n formData.append('remediationId', remediationFileDetails.remediationId);\r\n formData.append('isPostRemediation', remediationFileDetails.isPostRemediation);\r\n\r\n if (remediationFile) formData.append('file', remediationFile);\r\n\r\n return this.httpClient\r\n .createRequest(\r\n `location-testing/remediations/${remediationFileDetails.remediationId}/files`,\r\n )\r\n .asPost()\r\n .withContent(formData)\r\n .send();\r\n }\r\n\r\n deleteRemediationFile(id, remediationFileId) {\r\n return this.httpClient.delete(\r\n `location-testing/remediations/${id}/files/${remediationFileId}`,\r\n );\r\n }\r\n\r\n getRemediationRecordChanges(id) {\r\n return this.httpClient.get(`location-testing/remediations/${id}/record-changes`);\r\n }\r\n\r\n getPointTestHistory(pointId: number): Promise {\r\n return this.httpClient.get(`reporting/points/${pointId}/history`) as unknown as Promise<\r\n PointTestHistory[]\r\n >;\r\n }\r\n}\r\n","import { BaseQueryFilter } from '../infrastructure/components/query-filters/base-query-filter';\r\nimport { QueryFiltered } from '../infrastructure/components/query-filters/query-filtered';\r\nimport OutcomeStatus from './outcome-status';\r\n\r\nexport interface OutcomeStatusQuery {\r\n outcomeStatus: OutcomeStatus;\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class OutcomeStatusQueryFilters\r\n extends BaseQueryFilter\r\n implements OutcomeStatusQuery, QueryFiltered\r\n{\r\n private _outcomeStatus: OutcomeStatus;\r\n\r\n constructor() {\r\n super();\r\n this._outcomeStatus = OutcomeStatus.ALL;\r\n }\r\n\r\n public get outcomeStatus() {\r\n return this._outcomeStatus;\r\n }\r\n\r\n public set outcomeStatus(outcomeStatuses: OutcomeStatus) {\r\n this._outcomeStatus = outcomeStatuses || OutcomeStatus.ALL;\r\n }\r\n\r\n public get count(): number {\r\n return Number(!!this._outcomeStatus && this._outcomeStatus !== OutcomeStatus.ALL);\r\n }\r\n\r\n reset(): void {\r\n this._outcomeStatus = OutcomeStatus.ALL;\r\n }\r\n\r\n getQueryParams(): OutcomeStatusQuery {\r\n return {\r\n outcomeStatus: this._outcomeStatus,\r\n };\r\n }\r\n\r\n setFilterValues(params: OutcomeStatusQuery): void {\r\n super.setQueryFilteredValues(params, this);\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\n\r\nenum PointRisk {\r\n NOT_SPECIFIED = 'NotSpecified',\r\n LOW = 'Low',\r\n MEDIUM = 'Medium',\r\n HIGH = 'High'\r\n}\r\n\r\nexport default PointRisk;\r\n\r\nexport function getPointRiskOptions() {\r\n return [\r\n { value: PointRisk.NOT_SPECIFIED, title: 'Not Specified' },\r\n { value: PointRisk.LOW, title: 'Low' },\r\n { value: PointRisk.MEDIUM, title: 'Medium' },\r\n { value: PointRisk.HIGH, title: 'High' }\r\n ] as SelectorOption[]\r\n}\r\n","import { FirstDataRenderedEvent } from 'ag-grid-community';\r\n\r\nconst expandRowAtIndex = (params: FirstDataRenderedEvent, rowIndex: number) => {\r\n const displayedRowCount = params.api.getDisplayedRowCount();\r\n if (displayedRowCount === 0) {\r\n return;\r\n }\r\n if (rowIndex > displayedRowCount) {\r\n rowIndex = 1;\r\n }\r\n\r\n const expandRowIndex = displayedRowCount === 1 ? 0 : rowIndex;\r\n\r\n setTimeout(() => {\r\n const levelOneDisplayedRow = params.api.getDisplayedRowAtIndex(expandRowIndex);\r\n levelOneDisplayedRow.setExpanded(true);\r\n if (\r\n levelOneDisplayedRow.childrenAfterGroup?.length > 0 &&\r\n levelOneDisplayedRow.childrenAfterGroup[0].group\r\n ) {\r\n levelOneDisplayedRow.childrenAfterGroup[0].setExpanded(true);\r\n }\r\n }, 0);\r\n};\r\n\r\nexport { expandRowAtIndex };\r\n","import { BaseQueryFilter } from 'infrastructure/components/query-filters/base-query-filter';\r\nimport { OrganizationsQueryFilters } from 'infrastructure/components/query-filters/organizations-query-filter';\r\nimport { QueryFiltered } from 'infrastructure/components/query-filters/query-filtered';\r\n\r\nexport interface ExportTaskCollectionTemplateListQuery {\r\n organizationIds: number[];\r\n timeStamp?: number;\r\n}\r\nexport class ExportTaskCollectionTemplateListQueryFilters extends BaseQueryFilter\r\n implements QueryFiltered {\r\n\r\n organizationsQueryFilters: OrganizationsQueryFilters;\r\n\r\n constructor() {\r\n super();\r\n this.organizationsQueryFilters = new OrganizationsQueryFilters();\r\n }\r\n\r\n reset(): void {\r\n this.organizationsQueryFilters.reset();\r\n }\r\n\r\n public get count() {\r\n return this.organizationsQueryFilters.count;\r\n }\r\n\r\n getQueryParams(): ExportTaskCollectionTemplateListQuery {\r\n return {\r\n ...this.organizationsQueryFilters.getQueryParams(),\r\n timeStamp: Math.floor((new Date()).getTime() / 1000),\r\n };\r\n }\r\n\r\n setFilterValues(params: ExportTaskCollectionTemplateListQuery): void {\r\n super.setQueryFilteredValues(params, this);\r\n }\r\n}\r\n","import { GridStackOptions } from 'gridstack';\r\n\r\n// GridStack 7.x responsive API (oneColumnSize et al). When the frontend\r\n// toolchain is upgraded and gridstack moves to v10+, replace with columnOpts.\r\nexport function buildGridOptions(): GridStackOptions {\r\n return {\r\n staticGrid: true,\r\n column: 12,\r\n cellHeight: '12rem',\r\n margin: 8,\r\n oneColumnSize: 768,\r\n };\r\n}\r\n","import { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface MapPlanQuery {\r\n mapId?: number;\r\n planId?: number;\r\n mapIds: number[];\r\n planIds: number[];\r\n}\r\n\r\nexport class MapPlanQueryFilter extends BaseQueryFilter\r\n implements MapPlanQuery, QueryFiltered {\r\n\r\n private _mapPlanIds: number[];\r\n private _mapPlanFilterType: string;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._mapPlanIds = [];\r\n this._mapPlanFilterType = 'map';\r\n }\r\n mapId: number;\r\n planId: number;\r\n\r\n public get mapPlanFilterType() {\r\n return this._mapPlanFilterType;\r\n }\r\n\r\n public set mapPlanFilterType(mpFilterType: string) {\r\n this._mapPlanFilterType = mpFilterType;\r\n this._mapPlanIds = [];\r\n }\r\n\r\n public get mapIds() {\r\n return this._mapPlanFilterType === 'map' ? this._mapPlanIds : [];\r\n }\r\n\r\n public set mapIds(ids: number[]) {\r\n this._mapPlanFilterType = 'map';\r\n this._mapPlanIds = ids || [];\r\n }\r\n\r\n public get planIds() {\r\n return this._mapPlanFilterType === 'plan' ? this._mapPlanIds : [];\r\n }\r\n\r\n public set planIds(ids: number[]) {\r\n this._mapPlanFilterType = 'plan';\r\n this._mapPlanIds = ids || [];\r\n }\r\n\r\n public get mapPlanIds() {\r\n return this._mapPlanIds;\r\n }\r\n\r\n public set mapPlanIds(ids: number[]) {\r\n this._mapPlanIds = ids || [];\r\n }\r\n\r\n public get count(): number {\r\n return (Number(!!this._mapPlanIds.length));\r\n }\r\n\r\n reset(): void {\r\n this._mapPlanIds = [];\r\n this._mapPlanFilterType = 'map';\r\n }\r\n\r\n getQueryParams(): MapPlanQuery {\r\n return {\r\n mapIds: this.mapIds,\r\n planIds: this.planIds,\r\n };\r\n }\r\n\r\n setFilterValues(params: MapPlanQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n // NOTE: multiple mapId or plansId may be specified via the query string.\r\n // if planId is specified (contrained), it takes precedence over the mapId \r\n if (params.mapId) {\r\n params.mapIds = Array.isArray(params.mapId) ? params.mapId : [params.mapId];\r\n }\r\n if (params.planId) {\r\n params.planIds = Array.isArray(params.planId) ? params.planId : [params.planId];\r\n }\r\n\r\n super.setQueryFilteredValues(params, this);\r\n }\r\n}\r\n","enum GenerateTasksDateSelectionType {\r\n SINGLE_DATE = 'SingleDate',\r\n DATE_RANGE = 'DateRange',\r\n BY_MONTH = 'ByMonth',\r\n BY_WEEK = 'ByWeek',\r\n BY_DAY = 'ByDay',\r\n}\r\n\r\nexport default GenerateTasksDateSelectionType;\r\n","import PointRisk, { getPointRiskOptions } from './point-risk';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\n\r\nexport default class PointRiskComparer {\r\n static compareValues(a: PointRisk, b: PointRisk) {\r\n if (a === null)\r\n return -1;\r\n\r\n if (b === null)\r\n return 1;\r\n\r\n let options: SelectorOption[] = getPointRiskOptions();\r\n\r\n let aIndex = options.findIndex(x => x.value === a);\r\n let bIndex = options.findIndex(x => x.value === b);\r\n\r\n return aIndex - bIndex;\r\n }\r\n}\r\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","Number.isInteger = Number.isInteger || function (value) {\r\n return typeof value === \"number\"\r\n && isFinite(value)\r\n && Math.floor(value) === value;\r\n};\r\n\r\nexport default class NumberUtility {\r\n\r\n};\r\n","import moment from 'moment';\r\nimport Sample from 'requests/sample';\r\n\r\nexport const isSampleValid = (sample: Sample): boolean => {\r\n const isValid = sample.sampleTypeId !== null && moment(sample.collectionDate).isValid() && sample.composite !== null;\r\n\r\n return sample.segmentationTemplateId ? isValid : isValid && sample.description !== null;\r\n};\r\n\r\n","import Organization from 'organizations/organization';\r\nimport RecordStatus, { getRecordStatusOptions } from 'record-status';\r\nimport TestMethod from 'test-methods/test-method';\r\nimport CapPlanFilters from './cap-plan-filters';\r\n\r\nexport class UiCapPlanFilters implements CapPlanFilters {\r\n public isFilteringOrganization: boolean;\r\n\r\n public organizations: Organization[];\r\n public testMethods: TestMethod[];\r\n public recordStatusOptions: any;\r\n\r\n public selectedOrganizations: Organization[];\r\n public selectedTestMethods: TestMethod[];\r\n public recordStatus?: string;\r\n\r\n constructor() {\r\n this.isFilteringOrganization = false;\r\n this.organizations = [];\r\n this.selectedOrganizations = [];\r\n this.testMethods = [];\r\n this.selectedTestMethods = [];\r\n this.recordStatusOptions = getRecordStatusOptions();\r\n this.recordStatus = RecordStatus.ACTIVE;\r\n }\r\n\r\n get organizationIds(): number[] {\r\n return this.selectedOrganizations.map(o => o.organizationId);\r\n }\r\n\r\n get testMethodIds(): number[] {\r\n return this.selectedTestMethods.map(tm => tm.id);\r\n }\r\n\r\n get orgFilterCaption(): string {\r\n return this.selectedOrganizations.length\r\n ? this.selectedOrganizations.map(o => o.name).join(', ')\r\n : 'All Organizations';\r\n }\r\n\r\n get testMethodFilterCaption(): string {\r\n return this.selectedTestMethods.length\r\n ? this.selectedTestMethods.map(tm => tm.billCode).join(', ')\r\n : '';\r\n }\r\n\r\n apply() {\r\n this.isFilteringOrganization = true;\r\n }\r\n\r\n clear() {\r\n this.isFilteringOrganization = false;\r\n this.selectedOrganizations = [];\r\n this.selectedTestMethods = [];\r\n this.recordStatus = RecordStatus.ACTIVE;\r\n }\r\n\r\n toModel(): CapPlanFilters {\r\n return {\r\n organizationIds: this.organizationIds,\r\n testMethodIds: this.testMethodIds,\r\n recordStatus: this.recordStatus,\r\n };\r\n }\r\n}\r\n","// Mirrors dbo.ApplicationModule lookup data (FSNS.Portal.Database\\Scripts\\Data\\LookupData\\dbo.ApplicationModule.sql)\r\nexport enum ApplicationModuleId {\r\n Standard = 1,\r\n LocationTesting = 3,\r\n Pricing = 4,\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class ApplicationModuleService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getApplicationModules(organizationId) {\r\n return this\r\n .httpClient\r\n .get(`application-modules${(organizationId ? `?organizationId=${organizationId}` : '')}`);\r\n }\r\n\r\n saveApplicationModules(organizationId, applicationModules) {\r\n return this\r\n .httpClient\r\n .put(`application-modules?organizationId=${organizationId}`, applicationModules);\r\n }\r\n}\r\n","import { ICellEditorComp, ICellEditorParams } from 'ag-grid-community';\r\nimport InputMask from 'inputmask';\r\n\r\nexport class AgDateMaskEditor implements ICellEditorComp {\r\n private value: any;\r\n private input!: HTMLInputElement;\r\n private _inputMask: InputMask;\r\n private _maskOptions: any;\r\n private _charWasPressed: boolean;\r\n\r\n constructor() {\r\n this._maskOptions = {\r\n alias: 'datetime',\r\n inputFormat: 'mm/dd/yyyy hh:MM TT',\r\n placeholder: '*',\r\n min: '01/01/1960 12:00 AM',\r\n max: '12/31/2050 11:59 PM',\r\n };\r\n }\r\n\r\n init(params: ICellEditorParams): void {\r\n this._charWasPressed = params.charPress?.length > 0;\r\n this.value = params.charPress || params.value;\r\n\r\n this.input = document.createElement('input');\r\n this.input.type = 'text';\r\n this.input.value = this.value;\r\n this.input.setAttribute('data-cy', 'ag-popup-editor-input');\r\n this._inputMask = new InputMask(this._maskOptions).mask(this.input);\r\n }\r\n\r\n getGui() {\r\n return this.input;\r\n }\r\n\r\n afterGuiAttached() {\r\n this.input.focus();\r\n if (this._charWasPressed) {\r\n this.input.setSelectionRange(20, 20);\r\n }\r\n }\r\n\r\n isCancelAfterEnd(): boolean {\r\n const isValid = this._inputMask.isValid(this.input.value, this._maskOptions);\r\n if (!isValid) {\r\n this.input.value = null;\r\n }\r\n\r\n return !isValid;\r\n }\r\n\r\n getValue() {\r\n return this.input.value;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport Logger from '../../infrastructure/logger';\r\n\r\n@autoinject\r\nexport default class MapService {\r\n constructor(private httpClient: HttpClient, private logger: Logger) {\r\n this.httpClient = httpClient;\r\n this.logger = logger;\r\n }\r\n\r\n getMaps(queryParams: Record) {\r\n const query = buildQueryString(queryParams);\r\n\r\n return this.httpClient.get(`location-testing/maps${query ? `?${query}` : ''}`);\r\n }\r\n\r\n getMap(id) {\r\n return this.httpClient.get(`location-testing/maps/${id}`);\r\n }\r\n\r\n deleteMaps(ids) {\r\n var query = ids.map((id) => `id=${id}`).join('&');\r\n return this.httpClient.delete(`location-testing/maps?${query}`);\r\n }\r\n\r\n saveMap(map, mapPhotoFile) {\r\n var formData = new FormData();\r\n\r\n if (map.id) formData.append('id', map.id);\r\n\r\n if (mapPhotoFile) formData.append('photo', mapPhotoFile);\r\n\r\n formData.append('name', map.name);\r\n formData.append('description', map.description || '');\r\n formData.append('isActive', map.isActive);\r\n formData.append('organizationId', map.organizationId);\r\n\r\n for (var i = 0; i < map.attributes.length; i++) {\r\n formData.append(`attributes[${i}].name`, map.attributes[i].name);\r\n formData.append(`attributes[${i}].value`, map.attributes[i].value);\r\n }\r\n\r\n if (!map.id)\r\n return this.httpClient\r\n .createRequest('location-testing/maps/')\r\n .asPost()\r\n .withContent(formData)\r\n .send();\r\n\r\n return this.httpClient\r\n .createRequest(`location-testing/maps/${map.id}`)\r\n .asPut()\r\n .withContent(formData)\r\n .send();\r\n }\r\n\r\n updateMapPoints(mapId, points) {\r\n return this.httpClient.patch(`location-testing/maps/${mapId}`, points);\r\n }\r\n\r\n getMapRecordChanges(id) {\r\n return this.httpClient.get(`location-testing/maps/${id}/record-changes`);\r\n }\r\n\r\n getLatestResults(id, filters) {\r\n var query = buildQueryString(filters, true);\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/latest-results${query ? `?${query}` : ''}`,\r\n );\r\n }\r\n\r\n getHistoricalResults(id, filters) {\r\n var query = buildQueryString(filters, true);\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/historical-results${query ? `?${query}` : ''}`,\r\n );\r\n }\r\n\r\n getDailyResults(id, filters) {\r\n var query = buildQueryString(filters, true);\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/daily-results${query ? `?${query}` : ''}`,\r\n );\r\n }\r\n\r\n getPlanFilterOptions(id: number): Promise {\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/plan-filter-options`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getTestMethodFilterOptions(id: number): Promise {\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/test-method-filter-options`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getTaskAssigneeFilterOptions(id: number): Promise {\r\n return this.httpClient.get(\r\n `location-testing/maps/${id}/task-assignee-filter-options`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getDashboardSettings() {\r\n try {\r\n return JSON.parse(localStorage.getItem('mapDashboardSettings'));\r\n } catch (error) {\r\n this.logger.warn('Failed to parse local storage value for \"mapDashboardSettings\".');\r\n return null;\r\n }\r\n }\r\n\r\n saveDashboardSettings({\r\n panZoom,\r\n showLatestView: showLatestView,\r\n viewPointSize: viewPointSize,\r\n }: any) {\r\n var settings = this.getDashboardSettings() || {};\r\n\r\n settings.showLatestView =\r\n typeof showLatestView === 'boolean' ? showLatestView : settings.showLatestView;\r\n settings.viewPointSize = viewPointSize || settings.viewPointSize;\r\n\r\n if (panZoom) settings.panZoom = Object.assign(settings.panZoom || {}, panZoom);\r\n\r\n localStorage.setItem('mapDashboardSettings', JSON.stringify(settings));\r\n }\r\n\r\n getMapTests(id, testIds) {\r\n var query = testIds.map((testId) => `testId=${testId}`).join('&');\r\n return this.httpClient.get(`location-testing/maps/${id}/tests?${query}`);\r\n }\r\n}\r\n","import { ColDef, ColGroupDef } from 'ag-grid-community';\r\n\r\nconst addCellRendererParamsToColId = (\r\n colDefs: (ColDef | ColGroupDef)[],\r\n colId: string,\r\n cellRendererParams: any,\r\n): void => {\r\n colDefs.forEach((cd: ColDef) => {\r\n if (cd.colId === colId) {\r\n cd.cellRendererParams = cellRendererParams;\r\n }\r\n });\r\n};\r\n\r\nconst addCellRendererParamsToColField = (\r\n colDefs: (ColDef | ColGroupDef)[],\r\n colField: string,\r\n cellRendererParams: any,\r\n): void => {\r\n colDefs.forEach((cd: ColDef) => {\r\n if (cd.field === colField) {\r\n cd.cellRendererParams = cellRendererParams;\r\n }\r\n });\r\n};\r\n\r\nexport { addCellRendererParamsToColField, addCellRendererParamsToColId };\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\nfunction buildReportUrl(id, format, parameters, specialAction = null) {\r\n var action = specialAction ? `/${specialAction}` : '';\r\n var url = `reporting/reports/${id}${action}?format=`;\r\n\r\n if (format) url += `${encodeURIComponent(format)}`;\r\n\r\n if (parameters) {\r\n Object.keys(parameters).forEach(function (key) {\r\n const values = parameters[key];\r\n if (!values) return;\r\n\r\n for (let value of values)\r\n if (value !== null && typeof value !== 'undefined')\r\n url += `&${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\r\n });\r\n }\r\n\r\n return url;\r\n}\r\n\r\n@autoinject\r\nexport default class ReportService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n getReports() {\r\n return this.httpClient.get('reporting/reports');\r\n }\r\n\r\n getReportNotDownload(id: number) {\r\n return this.httpClient.get(`reporting/reports/${id}`);\r\n }\r\n\r\n getReport(id, format = null, parameters = null) {\r\n var url = buildReportUrl(id, format, parameters);\r\n return this.httpClient.get(url);\r\n }\r\n\r\n async getSubscription(reportId) {\r\n return this.httpClient.get(`reporting/reports/${reportId}/subscription`);\r\n }\r\n\r\n async createOrUpdateSubscription(id, subscriptionCriteria, parameters) {\r\n var format = subscriptionCriteria.deliveryFormat || 'pdf';\r\n var url = buildReportUrl(id, format, parameters, 'subscription');\r\n\r\n subscriptionCriteria.reportId = id;\r\n return this.httpClient.post(url, subscriptionCriteria);\r\n }\r\n\r\n async deleteSubscription(reportId) {\r\n return this.httpClient.delete(`reporting/reports/${reportId}/subscription`);\r\n }\r\n\r\n getDownloadUrl(id, format, parameters) {\r\n return 'api/' + buildReportUrl(id, format, parameters);\r\n }\r\n}\r\n","export default class ExcelCellRenderer {\r\n init(params) {\r\n let gridOptions = params.api.gridOptionsWrapper.gridOptions;\r\n\r\n this.overrideContext = gridOptions.overrideContext;\r\n\r\n this.rootElement = document.createElement('div');\r\n this.rootElement.style.width = '100%';\r\n\r\n let viewFactory = gridOptions.viewCompiler.compile(``);\r\n this.view = viewFactory.create(gridOptions.container);\r\n\r\n this.refresh(params);\r\n this.initialized = true;\r\n }\r\n\r\n getGui() {\r\n return this.rootElement;\r\n }\r\n\r\n refresh(params) {\r\n if (this.initialized)\r\n return;\r\n\r\n this.view.bind(params, this.overrideContext);\r\n this.view.appendNodesTo(this.rootElement);\r\n this.view.attached();\r\n }\r\n\r\n destroy() {\r\n this.view.unbind();\r\n this.view.removeNodes();\r\n this.view.detached();\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-framework';\r\nimport { WidgetLayoutItem } from './widget-layout-item';\r\nimport { ApplicationModuleId } from '../application-modules/application-module-id';\r\n\r\nexport function createDefaultLayoutItems(): WidgetLayoutItem[] {\r\n return [\r\n {\r\n id: 'request-statuses',\r\n title: 'Request Statuses',\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/widgets/request-statuses-widget'),\r\n requiredPermission: 'ViewRequests',\r\n x: 0,\r\n y: 0,\r\n w: 6,\r\n h: 2,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n {\r\n id: 'test-results',\r\n title: 'Test Results',\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/widgets/test-results-widget'),\r\n requiredPermission: 'ViewResults',\r\n x: 6,\r\n y: 0,\r\n w: 6,\r\n h: 2,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n {\r\n id: 'my-tasks',\r\n title: 'My Tasks',\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/widgets/my-tasks-widget'),\r\n requiredPermission: 'ViewMyTasks',\r\n requiredApplicationModule: ApplicationModuleId.LocationTesting,\r\n x: 0,\r\n y: 2,\r\n w: 3,\r\n h: 3,\r\n compactMaxWidth: 420,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n {\r\n id: 'task-management',\r\n title: 'Task Management',\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/widgets/task-management-widget'),\r\n requiredPermission: 'ViewAllTasks',\r\n requiredApplicationModule: ApplicationModuleId.LocationTesting,\r\n x: 3,\r\n y: 2,\r\n w: 3,\r\n h: 3,\r\n compactMaxWidth: 420,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n {\r\n id: 'my-remediations',\r\n title: 'My Open Remediations',\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/widgets/my-remediations-widget'),\r\n requiredPermission: 'ViewMyRemediations',\r\n requiredApplicationModule: ApplicationModuleId.LocationTesting,\r\n x: 6,\r\n y: 2,\r\n w: 3,\r\n h: 3,\r\n compactMaxWidth: 420,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n {\r\n id: 'all-remediations',\r\n title: 'Open Remediation Management',\r\n moduleId: PLATFORM.moduleName(\r\n 'dashboard-widgets/widgets/remediation-management-widget',\r\n ),\r\n requiredPermission: 'ViewAllRemediations',\r\n requiredApplicationModule: ApplicationModuleId.LocationTesting,\r\n x: 9,\r\n y: 2,\r\n w: 3,\r\n h: 3,\r\n compactMaxWidth: 420,\r\n state: 'pending',\r\n filterable: true,\r\n },\r\n ];\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\n\r\n@inject(HttpClient)\r\nexport default class OrganizationSampleTemplateService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getOrganizationSampleTemplates(organizationId) {\r\n return this.httpClient.get(`organization-sample-templates?organizationIds=${organizationId}`);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport TaskStatusSelectorDialog from './task-status-selector-dialog';\r\n\r\nexport interface TaskStatusSelection {\r\n statusName: string;\r\n statusId: string;\r\n collectedDateTime: string;\r\n comments: string;\r\n}\r\n\r\nexport interface TaskStatusSelectionResult {\r\n cancelled: boolean;\r\n statusInfo?: TaskStatusSelection;\r\n tasks?: any[];\r\n}\r\n\r\n@autoinject\r\nexport class TaskStatusUpdateService {\r\n constructor(\r\n private dialogService: DialogService,\r\n private dialogPresenter: DialogPresenter,\r\n ) {}\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n async selectStatus(tasks: any[]): Promise {\r\n const dialogResult = (await this.showTaskStatusSelectorDialog(tasks)) as any;\r\n if (!dialogResult || !dialogResult.output) {\r\n return { cancelled: true };\r\n }\r\n\r\n const statusInfo: TaskStatusSelection = dialogResult.output;\r\n\r\n if (statusInfo.statusId === 'InProgress' || statusInfo.statusId === 'Completed') {\r\n const validTasks = tasks.filter((t) => !!t.assignedUserEmail);\r\n const diff = tasks.length - validTasks.length;\r\n const taskNoun = diff > 1 ? 'tasks' : 'task';\r\n const haveClause = diff > 1 ? 'they have' : 'it has';\r\n\r\n if (validTasks.length === 0) {\r\n await this.dialogPresenter.showAlert(\r\n 'No Valid Tasks Selected',\r\n `The selected ${taskNoun} cannot be updated to status ${statusInfo.statusName} because ${haveClause} no assigned user.`,\r\n );\r\n return { cancelled: true };\r\n }\r\n\r\n if (validTasks.length < tasks.length) {\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Not All Selected Tasks Valid',\r\n `${diff} ${taskNoun} cannot be updated to status ${statusInfo.statusName} because ${haveClause} no assigned user. Do you want to continue updating the other task(s)?`,\r\n );\r\n if (!confirmed) {\r\n return { cancelled: true };\r\n }\r\n\r\n return { cancelled: false, statusInfo, tasks: validTasks };\r\n }\r\n }\r\n\r\n return { cancelled: false, statusInfo, tasks };\r\n }\r\n\r\n private showTaskStatusSelectorDialog(tasks: any[]) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: TaskStatusSelectorDialog,\r\n model: { tasks },\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n}\r\n","import { ICellRendererParams } from 'ag-grid-community';\r\n\r\nexport const AgBoolCellRenderer = (params: ICellRendererParams) => {\r\n const { value }: { value: boolean } = params;\r\n if (typeof value !== 'boolean') {\r\n throw new Error('AgBoolRenderer requires a cell value of type boolean');\r\n }\r\n\r\n return value ? '' : '';\r\n};\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@autoinject\r\nexport default class ParameterOptionService {\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n }\r\n\r\n getParameterOptions(parameterName) {\r\n return this.httpClient.get(`reporting/parameter-options?parameterName=${parameterName}`);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport TaskGenerationRequest from './task-generation-request';\r\nimport Logger from '../../infrastructure/logger';\r\nimport TaskGenerationClientSettings from './task-generation-client-settings';\r\nimport GenerateTasksPointZoneDistributionMethod from './generate-tasks-point-zone-distribution-method';\r\n\r\n@autoinject\r\nexport default class TaskGenerationRequestService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private logger: Logger\r\n ) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n submit(request: TaskGenerationRequest) {\r\n return this.httpClient.post('location-testing/task-generation-requests', request);\r\n }\r\n\r\n getPlanSettings(planId: number): TaskGenerationClientSettings {\r\n let storageKey = `${'taskGenerationPlanSettings'}-${planId}`;\r\n\r\n try {\r\n return JSON.parse(localStorage.getItem(storageKey)) as TaskGenerationClientSettings;\r\n } catch (error) {\r\n this.logger.warn(`Failed to parse local storage value for '${storageKey}'.`);\r\n return null;\r\n }\r\n }\r\n\r\n savePlanSettings(planId: number, settingsToPersist: TaskGenerationClientSettings) {\r\n var settings = (this.getPlanSettings(planId) || {}) as TaskGenerationClientSettings;\r\n\r\n settings.pointZoneDistributionMethod = settingsToPersist.pointZoneDistributionMethod;\r\n settings.pointZoneDistributions = settingsToPersist.pointZoneDistributions;\r\n settings.riskPriorities = settingsToPersist.riskPriorities;\r\n settings.dateSelectionType = settingsToPersist.dateSelectionType;\r\n\r\n if(settingsToPersist.pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE ||\r\n settingsToPersist.pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.PERCENTAGE){\r\n settings.requestedTaskCount = settingsToPersist.requestedTaskCount;\r\n } else {\r\n delete settings.requestedTaskCount;\r\n }\r\n\r\n let storageKey = `${'taskGenerationPlanSettings'}-${planId}`;\r\n localStorage.setItem(storageKey, JSON.stringify(settings));\r\n }\r\n}\r\n\r\n","import { BaseQueryFilter } from '../infrastructure/components/query-filters/base-query-filter';\r\nimport {\r\n DateRangeQuery,\r\n DateRangeQueryFilter,\r\n} from '../infrastructure/components/query-filters/date-range-query-filter';\r\nimport { QueryFiltered } from '../infrastructure/components/query-filters/query-filtered';\r\nimport OutcomeStatus from './outcome-status';\r\nimport { OutcomeStatusQuery, OutcomeStatusQueryFilters } from './outcome-status-query-filter';\r\n\r\nexport interface TestResultListQuery {\r\n dateRangeOption?: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n enableTimeFilter?: boolean;\r\n outcomeStatus?: OutcomeStatus;\r\n pointZones?: number[];\r\n limit?: number;\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class TestResultsQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered\r\n{\r\n private _filterCaption: string;\r\n dateRangeQueryFilters: DateRangeQueryFilter;\r\n outcomeStatusQueryFilters: OutcomeStatusQueryFilters;\r\n pointZones?: number[];\r\n limit?: number;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.dateRangeQueryFilters = new DateRangeQueryFilter();\r\n this.outcomeStatusQueryFilters = new OutcomeStatusQueryFilters();\r\n this.pointZones = [];\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n this.outcomeStatusQueryFilters.count +\r\n Number(!!(this.pointZones && this.pointZones.length))\r\n );\r\n }\r\n\r\n public get filterCaption(): string {\r\n return this._filterCaption;\r\n }\r\n\r\n reset(): void {\r\n this.dateRangeQueryFilters.reset();\r\n this.outcomeStatusQueryFilters.reset();\r\n\r\n this.pointZones = [];\r\n this.limit = null;\r\n }\r\n\r\n getQueryParams(): TestResultListQuery {\r\n return {\r\n ...this.dateRangeQueryFilters.getQueryParams(),\r\n ...this.outcomeStatusQueryFilters.getQueryParams(),\r\n pointZones: this.pointZones,\r\n limit: this.limit,\r\n };\r\n }\r\n\r\n setFilterValues(params: TestResultListQuery): void {\r\n const dateRangeQuery: DateRangeQuery = {\r\n dateRangeOverride: params.dateRangeOverride,\r\n dateRangeOption: params.dateRangeOption,\r\n targetStartDate: params.targetStartDate,\r\n targetEndDate: params.targetEndDate,\r\n enableTimeFilter: params.enableTimeFilter,\r\n };\r\n const outcomeStatusQuery: OutcomeStatusQuery = { outcomeStatus: params.outcomeStatus };\r\n const { pointZones, limit } = { ...params };\r\n\r\n this.dateRangeQueryFilters.setFilterValues(dateRangeQuery);\r\n this.outcomeStatusQueryFilters.setFilterValues(outcomeStatusQuery);\r\n\r\n super.setQueryFilteredValues({ pointZones, limit }, this);\r\n\r\n this._filterCaption = super.getFilterCaption(\r\n this.count,\r\n 'Target Date Range',\r\n this.dateRangeQueryFilters.dateRangeCaption,\r\n );\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport { PointTestResult } from 'location-testing/maps/grids/point-test-result';\r\nimport { buildAttributeQuery } from '../attribute-utility';\r\nimport PointFilters from './point-filters';\r\n\r\n@autoinject\r\nexport default class PointService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n getPoints(filters: PointFilters, view: 'summary' = null): Promise {\r\n let attributeQuery = buildAttributeQuery(filters.pointAttributes, 'pointAttributes');\r\n let { ids, organizationIds, mapIds, pointId, planIds, sampleIds, recordStatus } = filters;\r\n let query = buildQueryString(\r\n { ids, organizationIds, mapIds, pointId, planIds, sampleIds, recordStatus },\r\n true,\r\n );\r\n\r\n let url = `location-testing/points?${query}&view=${view || ''}&${attributeQuery}`;\r\n return this.httpClient.get(url) as any as Promise;\r\n }\r\n\r\n getPoint(id): Promise {\r\n return this.httpClient.get(`location-testing/points/${id}`) as any;\r\n }\r\n\r\n deletePoints(ids) {\r\n var query = ids.map((id) => `id=${id}`).join('&');\r\n return this.httpClient.delete(`location-testing/points?${query}`);\r\n }\r\n\r\n savePoint(point, pointPhotoFile): Promise {\r\n var formData = new FormData();\r\n\r\n if (point.id) formData.append('id', point.id);\r\n\r\n if (pointPhotoFile) formData.append('photo', pointPhotoFile);\r\n\r\n formData.append('name', point.name);\r\n formData.append('description', point.description || '');\r\n formData.append('room', point.room || '');\r\n formData.append('zone', point.zone);\r\n formData.append('mobile', point.mobile);\r\n formData.append('type', point.type || '');\r\n formData.append('risk', point.risk);\r\n formData.append('isActive', point.isActive);\r\n formData.append('mapId', point.mapId);\r\n formData.append('x', point.x);\r\n formData.append('y', point.y);\r\n\r\n for (var i = 0; i < point.attributes.length; i++) {\r\n formData.append(`attributes[${i}].name`, point.attributes[i].name);\r\n formData.append(`attributes[${i}].value`, point.attributes[i].value);\r\n }\r\n\r\n if (!point.id)\r\n return this.httpClient\r\n .createRequest('location-testing/points/')\r\n .asPost()\r\n .withContent(formData)\r\n .send();\r\n\r\n return this.httpClient\r\n .createRequest(`location-testing/points/${point.id}`)\r\n .asPut()\r\n .withContent(formData)\r\n .send();\r\n }\r\n\r\n getPointRecordChanges(id): Promise {\r\n return this.httpClient.get(\r\n `location-testing/points/${id}/record-changes`,\r\n ) as any as Promise;\r\n }\r\n\r\n getPointTests(id: number, filters): Promise {\r\n var query = buildQueryString(filters, true);\r\n\r\n return this.httpClient.get(\r\n `location-testing/points/${id}/tests${query ? `?${query}` : ''}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getHasOverdueTasks(id): Promise {\r\n return this.httpClient.get(`location-testing/points/${id}/has-overdue-tasks`);\r\n }\r\n\r\n getRiskCaption(risk) {\r\n switch (risk) {\r\n case 'NotSpecified':\r\n return 'Not Specified';\r\n\r\n case 'Low':\r\n case 'Medium':\r\n case 'High':\r\n default:\r\n return risk;\r\n }\r\n }\r\n}\r\n","import { ApplicationInsights, SeverityLevel, IExceptionTelemetry, ITraceTelemetry } from '@microsoft/applicationinsights-web';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport ApplicationInsightsErrorData from './application-insights-error-data';\r\n\r\nvar trackingAttributeKey = 'data-appinsights';\r\n\r\nfunction getAttributesLike(partial, attributes) {\r\n const results = [];\r\n for (let x = 0; x < attributes.length; ++x) {\r\n if (attributes[x].name.indexOf(partial) >= 0) {\r\n results.push(attributes[x]);\r\n }\r\n }\r\n return results;\r\n}\r\n\r\nconst domHelper = {\r\n isElement: function (e) {\r\n return e instanceof HTMLElement;\r\n },\r\n hasClass: function (cls) {\r\n return function (e) {\r\n return domHelper.isElement(e) && e.classList.contains(cls);\r\n };\r\n },\r\n hasTrackingInfo: function (e) {\r\n return domHelper.isElement(e) && (getAttributesLike(trackingAttributeKey, e.attributes).length > 0);\r\n },\r\n isOfType: function (e, type) {\r\n return domHelper.isElement(e) &&\r\n e.nodeName.toLowerCase() === type.toLowerCase();\r\n },\r\n isAnchor: function (e) {\r\n return domHelper.isOfType(e, 'a');\r\n },\r\n isButton: function (e) {\r\n return domHelper.isOfType(e, 'button');\r\n }\r\n};\r\n\r\nconst defaultOptions = {\r\n pageTracking: {\r\n enabled: true,\r\n getTitle: function (payload) {\r\n return payload.instruction.config.title;\r\n }\r\n },\r\n clickTracking: {\r\n enabled: true,\r\n filter: function (element) {\r\n return domHelper.isElement(element); // && (criteria.isAnchor(element) || criteria.isButton(element));\r\n }\r\n }\r\n};\r\n\r\nconst delegate = function (criteria, listener) {\r\n return function (evt) {\r\n let el = evt.target;\r\n\r\n if (criteria && !criteria(el)) \r\n return;\r\n \r\n evt.delegateTarget = el;\r\n listener.call(this, evt);\r\n };\r\n};\r\n\r\n// NOTE: https://github.com/microsoft/ApplicationInsights-JS\r\n\r\n@autoinject\r\nexport default class ApplicationInsightsService {\r\n private loaded: boolean;\r\n private appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: ''\r\n }\r\n });\r\n\r\n private options: any;\r\n\r\n constructor(private eventAggregator: EventAggregator) {\r\n this.loaded = false;\r\n this.options = defaultOptions;\r\n\r\n this.trackClick = this.trackClick.bind(this);\r\n this.trackPageView = this.trackPageView.bind(this);\r\n }\r\n\r\n registerKey(key: string) {\r\n if (!key || this.loaded)\r\n return;\r\n\r\n this.appInsights.config.instrumentationKey = key;\r\n this.appInsights.loadAppInsights();\r\n\r\n this.appInsights.addTelemetryInitializer((item) => {\r\n const ipAddress = item.tags && item.tags['ai.location.ip'];\r\n if (ipAddress) {\r\n item.baseData.properties = {\r\n ...item.baseData.properties,\r\n 'client-ip': ipAddress\r\n };\r\n }\r\n }); \r\n\r\n this._attachPageTracker();\r\n this._attachClickTracker();\r\n\r\n this.loaded = true;\r\n }\r\n\r\n setUserId(userId: string, accountId: string) {\r\n if (!this.loaded)\r\n return;\r\n\r\n this.appInsights.setAuthenticatedUserContext(userId, accountId, true);\r\n }\r\n\r\n clearUserId() {\r\n if (!this.loaded)\r\n return;\r\n\r\n this.appInsights.clearAuthenticatedUserContext();\r\n }\r\n\r\n trackPageView(name?: string, uri?: string) {\r\n if (!this.loaded)\r\n return;\r\n\r\n this.appInsights.trackPageView({ name, uri });\r\n }\r\n\r\n trackClick(evt) {\r\n if (!this.loaded)\r\n return;\r\n\r\n if (!evt || !evt.delegateTarget || !domHelper.hasTrackingInfo(evt.delegateTarget))\r\n return;\r\n\r\n const dimensions = {};\r\n const element = evt.delegateTarget;\r\n const matches = getAttributesLike(trackingAttributeKey, element.attributes);\r\n matches.forEach(match => {\r\n var dataItems = match.value.split(';');\r\n dataItems.forEach(di => {\r\n var components = di.split(':');\r\n dimensions[components[0].toLowerCase()] = components[1];\r\n });\r\n });\r\n\r\n this.appInsights.trackEvent({ name: 'click', properties: dimensions });\r\n }\r\n\r\n trackEvent(logLevel: number, error: Error, message: string, data: ApplicationInsightsErrorData, state: string) {\r\n function getSeverityLevel(logLevel: number): SeverityLevel {\r\n let level: SeverityLevel = SeverityLevel.Critical;\r\n \r\n switch (logLevel) {\r\n case 2:\r\n level = SeverityLevel.Information\r\n break;\r\n case 3:\r\n level = SeverityLevel.Warning;\r\n break;\r\n case 4:\r\n level = SeverityLevel.Error;\r\n break;\r\n default:\r\n level = SeverityLevel.Warning;\r\n }\r\n\r\n return level;\r\n }\r\n\r\n if (!this.loaded)\r\n return;\r\n\r\n if (error)\r\n this.trackError(error, message, getSeverityLevel(logLevel), data, state);\r\n else\r\n this.trackTrace(message, getSeverityLevel(logLevel), data, state)\r\n }\r\n\r\n trackError(error: Error, message: string, level: SeverityLevel, errorData: ApplicationInsightsErrorData, state: string) {\r\n if (!this.loaded)\r\n return;\r\n\r\n let telemetry: IExceptionTelemetry = {};\r\n telemetry.exception = error ?? new Error(message);\r\n telemetry.severityLevel = level;\r\n\r\n telemetry.properties = this._convertDataToDictionary(errorData);\r\n\r\n if (error && message) \r\n telemetry.properties['message'] = message;\r\n\r\n if (state)\r\n telemetry.properties['state'] = state;\r\n\r\n this.appInsights.trackException(telemetry);\r\n }\r\n\r\n trackTrace(message: string, level: SeverityLevel, errorData: ApplicationInsightsErrorData, state: string) {\r\n if (!this.loaded)\r\n return;\r\n\r\n let telemetry: ITraceTelemetry = {\r\n message: message,\r\n severityLevel: level \r\n };\r\n\r\n let properties = this._convertDataToDictionary(errorData);\r\n\r\n if (state)\r\n properties['state'] = state;\r\n\r\n this.appInsights.trackTrace(telemetry, properties); \r\n }\r\n\r\n _attachPageTracker() {\r\n if (!this.options.pageTracking.enabled)\r\n return;\r\n\r\n this.eventAggregator.subscribe('router:navigation:success', payload => {\r\n this.trackPageView(\r\n payload.instruction.fragment,\r\n this.options.pageTracking.getTitle(payload)\r\n );\r\n });\r\n }\r\n\r\n _attachClickTracker() {\r\n if (!this.options.clickTracking.enabled)\r\n return;\r\n\r\n document.querySelector('body').addEventListener(\r\n 'click',\r\n delegate(this.options.clickTracking.filter, this.trackClick),\r\n false\r\n );\r\n }\r\n\r\n _convertDataToDictionary(errorData: ApplicationInsightsErrorData) {\r\n let properties = {};\r\n\r\n if (errorData.loggerName)\r\n properties['loggerName'] = errorData.loggerName;\r\n\r\n if (errorData.apiErrorCode)\r\n properties['apiErrorCode'] = errorData.apiErrorCode;\r\n\r\n if (errorData.exception)\r\n properties['exception'] = errorData.exception;\r\n\r\n if (errorData.httpMethod)\r\n properties['httpMethod'] = errorData.httpMethod;\r\n\r\n if (errorData.requestId)\r\n properties['requestId'] = errorData.requestId;\r\n\r\n if (errorData.statusCode)\r\n properties['statusCode'] = errorData.statusCode;\r\n\r\n if (errorData.url)\r\n properties['url'] = errorData.url;\r\n\r\n return properties;\r\n }\r\n}\r\n","import moment from 'moment';\r\nimport { createDateRangeFilterOption } from '../filters/date-range-filter';\r\nimport DateRangeFilterOption from '../filters/date-range-filter-option';\r\nimport { BaseQueryFilter } from './base-query-filter';\r\nimport { QueryFiltered } from './query-filtered';\r\n\r\nexport interface DateRangeQuery {\r\n dateRangeOption: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n enableTimeFilter?: boolean;\r\n}\r\n\r\nexport type DateRangeQueryFilterOptionValue =\r\n | 'today'\r\n | 'last7Days'\r\n | 'last30Days'\r\n | 'custom'\r\n | 'next1Days'\r\n | 'next5Days'\r\n | 'next6Days'\r\n | 'next7Days'\r\n | 'next30Days'\r\n | 'next60Days'\r\n | 'next90Days'\r\n | 'next120Days'\r\n | 'allTime';\r\n\r\nexport class DateRangeQueryFilter extends BaseQueryFilter implements QueryFiltered {\r\n private _queryFilterDateRangeLocalStorageKey: string;\r\n private _defaultOptionValue: DateRangeQueryFilterOptionValue;\r\n private _querystringDateFormat = 'YYYY-MM-DDTHH:mm:ss.SSS[Z]';\r\n private _displayDateFormat = 'MM/DD/YYYY';\r\n private _defaultDateRangeFilterOption: DateRangeFilterOption;\r\n private _defaultDateRangeFilterOptions: DateRangeFilterOption[] = [\r\n createDateRangeFilterOption('last7Days', 'Last 7 Days', 7, false),\r\n createDateRangeFilterOption('last30Days', 'Last 30 Days', 30, false),\r\n createDateRangeFilterOption('custom', 'Specific Range'),\r\n createDateRangeFilterOption('today', 'Today', 0, true),\r\n createDateRangeFilterOption('next1Days', 'Today and Tomorrow (Emma)', 1, true),\r\n createDateRangeFilterOption('next5Days', 'Next 5 Days (Emma)', 5, true),\r\n createDateRangeFilterOption('next6Days', 'Next 6 Days (Emma)', 6, true),\r\n createDateRangeFilterOption('next7Days', 'Next 7 Days (Emma)', 7, true),\r\n createDateRangeFilterOption('next30Days', 'Next 30 Days (Emma)', 30, true),\r\n createDateRangeFilterOption('next60Days', 'Next 60 Days (Emma)', 60, true),\r\n createDateRangeFilterOption('next90Days', 'Next 90 Days (Emma)', 90, true),\r\n createDateRangeFilterOption('next120Days', 'Next 120 Days (Emma)', 120, true),\r\n ];\r\n private _dateRangeOption: string;\r\n private _dateRangeFilterOption: DateRangeFilterOption;\r\n private _dateRangeFilterOptions: DateRangeFilterOption[];\r\n private _enableTimeFilter: boolean;\r\n\r\n constructor(\r\n storageKey = 'query-filter.date-range',\r\n defaultOptionValue: DateRangeQueryFilterOptionValue = 'today',\r\n includeAllTimeOption = false,\r\n excludeEmmaOptions = false,\r\n ) {\r\n super();\r\n\r\n this._queryFilterDateRangeLocalStorageKey = storageKey;\r\n this._defaultOptionValue = defaultOptionValue;\r\n\r\n if (excludeEmmaOptions) {\r\n this._defaultDateRangeFilterOptions = this._defaultDateRangeFilterOptions.filter(\r\n (o) => !o.caption.includes('(Emma)'),\r\n );\r\n }\r\n\r\n if (includeAllTimeOption) {\r\n this._defaultDateRangeFilterOptions = [\r\n {\r\n value: 'allTime',\r\n caption: 'All Time',\r\n numericValue: 0,\r\n startDate: null,\r\n endDate: null,\r\n },\r\n ...this._defaultDateRangeFilterOptions,\r\n ];\r\n }\r\n\r\n // Tags the baked-in default option for display in the dropdown (e.g. \"Today (Default)\")\r\n // without touching `caption` itself, which the applied-filter summary bar also reads.\r\n this._defaultDateRangeFilterOptions.forEach((o) => {\r\n o.displayCaption = o.value === this._defaultOptionValue ? `${o.caption} (Default)` : o.caption;\r\n });\r\n\r\n this._defaultDateRangeFilterOption =\r\n (this._queryFilterDateRangeLocalStorageKey &&\r\n super.getPersistedFilter(this._queryFilterDateRangeLocalStorageKey)) ||\r\n this._defaultDateRangeFilterOptions.find((o) => o.value === this._defaultOptionValue);\r\n\r\n this._dateRangeFilterOptions = this._defaultDateRangeFilterOptions;\r\n this._dateRangeOption = this._defaultDateRangeFilterOption.value;\r\n this._dateRangeFilterOption = this._defaultDateRangeFilterOption;\r\n this._enableTimeFilter = false;\r\n }\r\n\r\n public get defaultDateRangeFilterOption() {\r\n return this._defaultDateRangeFilterOption;\r\n }\r\n\r\n public get dateRangeOption() {\r\n return this._dateRangeOption;\r\n }\r\n\r\n public get dateRangeFilterOption() {\r\n return this._dateRangeFilterOption;\r\n }\r\n\r\n public set dateRangeFilterOption(option: DateRangeFilterOption) {\r\n const dateRangeFilterOption = this._dateRangeFilterOptions.find(\r\n (o: DateRangeFilterOption) => o.value === option.value,\r\n );\r\n if (!dateRangeFilterOption) {\r\n throw new Error(`The dateRangeFilterOption of ${option.value} is not valid.`);\r\n }\r\n if (dateRangeFilterOption.value === 'custom') {\r\n dateRangeFilterOption.startDate = null;\r\n dateRangeFilterOption.endDate = null;\r\n }\r\n\r\n this._dateRangeOption = dateRangeFilterOption.value;\r\n this._dateRangeFilterOption = dateRangeFilterOption;\r\n }\r\n\r\n public get dateRangeFilterOptions(): DateRangeFilterOption[] {\r\n return this._dateRangeFilterOptions;\r\n }\r\n\r\n public get dateRangeCaption(): string {\r\n if (this._dateRangeOption !== 'custom') {\r\n return this._dateRangeFilterOption.caption;\r\n }\r\n\r\n return this.formattedDateRange;\r\n }\r\n\r\n public get formattedDateRange(): string {\r\n const startDate = this.formatDisplayDate(this._dateRangeFilterOption.startDate) || '*';\r\n const endDate = this.formatDisplayDate(this._dateRangeFilterOption.endDate) || '*';\r\n\r\n return `( ${startDate} - ${endDate} )`;\r\n }\r\n\r\n public get enableTimeFilter(): boolean {\r\n return this._enableTimeFilter;\r\n }\r\n\r\n private formatDisplayDate(date: Date) {\r\n return date ? moment(date).format(this._displayDateFormat) : null;\r\n }\r\n\r\n public formatDate(date: Date, endDate?: boolean): string {\r\n return date\r\n ? this._enableTimeFilter\r\n ? moment(date).format()\r\n : endDate\r\n ? moment(date).startOf('day').add(1, 'days').format()\r\n : moment(date).startOf('day').format()\r\n : null;\r\n }\r\n\r\n private configureDateRangeFilterOption(\r\n dateRangeOption: string,\r\n targetStartDate: string,\r\n targetEndDate: string,\r\n subtractDay?: boolean,\r\n ): DateRangeFilterOption {\r\n //We must support named date ranges to keep in sync\r\n //support named ranges first if not found bail out to default\r\n //otherwise everything is custom\r\n if (dateRangeOption && dateRangeOption !== 'custom') {\r\n const namedDateRangeFilterOption = this._dateRangeFilterOptions.find(\r\n (o) => o.value === dateRangeOption,\r\n );\r\n if (!namedDateRangeFilterOption) {\r\n return;\r\n }\r\n this.dateRangeFilterOption = namedDateRangeFilterOption;\r\n return;\r\n }\r\n\r\n const customDateRangeOption = this._dateRangeFilterOptions.find(\r\n (o) => o.value === 'custom',\r\n );\r\n const momentStartDate = moment(targetStartDate, this._querystringDateFormat);\r\n const momentEndDate = subtractDay\r\n ? moment(targetEndDate, this._querystringDateFormat).subtract(1, 'days')\r\n : moment(targetEndDate, this._querystringDateFormat);\r\n if (momentStartDate.isValid()) {\r\n customDateRangeOption.startDate = momentStartDate.toDate();\r\n }\r\n if (momentEndDate.isValid()) {\r\n customDateRangeOption.endDate = momentEndDate.toDate();\r\n }\r\n\r\n this._dateRangeOption = customDateRangeOption.value;\r\n this._dateRangeFilterOption = customDateRangeOption;\r\n }\r\n\r\n public get count(): number {\r\n return Number(this._dateRangeFilterOption !== this._defaultDateRangeFilterOption);\r\n }\r\n\r\n reset(): void {\r\n this._defaultDateRangeFilterOption = this._defaultDateRangeFilterOptions.find(\r\n (o) => o.value === this._defaultOptionValue,\r\n );\r\n this._dateRangeOption = this._defaultDateRangeFilterOption.value;\r\n this._dateRangeFilterOption = this._defaultDateRangeFilterOption;\r\n this._enableTimeFilter = false;\r\n\r\n if (this._queryFilterDateRangeLocalStorageKey) {\r\n super.setPersistedFilter(\r\n this._queryFilterDateRangeLocalStorageKey,\r\n this._dateRangeFilterOption,\r\n );\r\n }\r\n }\r\n\r\n getQueryParams(): DateRangeQuery {\r\n return {\r\n targetStartDate: this.formatDate(this._dateRangeFilterOption.startDate),\r\n targetEndDate: this.formatDate(this._dateRangeFilterOption.endDate, true),\r\n dateRangeOption: this._dateRangeOption,\r\n enableTimeFilter: this._enableTimeFilter,\r\n };\r\n }\r\n\r\n setFilterValues(params: DateRangeQuery): void {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const {\r\n dateRangeOption,\r\n targetStartDate,\r\n targetEndDate,\r\n dateRangeOverride,\r\n enableTimeFilter,\r\n } = params;\r\n this._enableTimeFilter = enableTimeFilter;\r\n\r\n //(1) Do nothing - defaults apply\r\n if (!dateRangeOption && !dateRangeOverride) {\r\n return;\r\n }\r\n\r\n //(2) Override global settings for this request\r\n if (dateRangeOverride || !this._queryFilterDateRangeLocalStorageKey) {\r\n this.configureDateRangeFilterOption(\r\n dateRangeOption,\r\n targetStartDate,\r\n targetEndDate,\r\n true,\r\n );\r\n return;\r\n }\r\n\r\n //(3) Set Global\r\n // The end date needs to be rolled back for custom dates...\r\n // as it was incremented up for the query/server\r\n this.configureDateRangeFilterOption(dateRangeOption, targetStartDate, targetEndDate, true);\r\n super.setPersistedFilter(\r\n this._queryFilterDateRangeLocalStorageKey,\r\n this._dateRangeFilterOption,\r\n );\r\n }\r\n\r\n persistCurrentSelection(): void {\r\n if (!this._queryFilterDateRangeLocalStorageKey) {\r\n return;\r\n }\r\n\r\n super.setPersistedFilter(\r\n this._queryFilterDateRangeLocalStorageKey,\r\n this._dateRangeFilterOption,\r\n );\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport AmsCoaExport from './ams-coa-export';\r\n\r\n@autoinject\r\nexport default class AmsCoaExportService {\r\n constructor(\r\n private httpClient: HttpClient) {\r\n }\r\n\r\n createAmsCoaExport(amsCoaExport: AmsCoaExport) {\r\n return this.httpClient.post('ams-coa-exports', amsCoaExport);\r\n }\r\n}\r\n","enum MapDashboardViewOption {\r\n ALL = 'all',\r\n ROUTINE = 'routine',\r\n VECTOR_SWAB = 'vectorSwab',\r\n CORRECTIVE_ACTION = 'correctiveActionSwab'\r\n}\r\n\r\nexport default MapDashboardViewOption;\r\n","export enum GlobalMessageSearchType {\r\n Default = 'Default',\r\n Read = 'Read',\r\n Deleted = 'Deleted',\r\n All = 'All',\r\n}\r\n","import {\r\n GridOptions,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n} from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport moment from 'moment';\r\nimport 'moment-timezone';\r\nimport { findIana } from 'windows-iana';\r\nimport { SubscriptionFrequencyType } from './contracts/subscription-frequency-type';\r\n\r\nconst getWeekday = (dayOfWeek: number): string => {\r\n const weekdays = new Array(7);\r\n weekdays[0] = 'Sunday';\r\n weekdays[1] = 'Monday';\r\n weekdays[2] = 'Tuesday';\r\n weekdays[3] = 'Wednesday';\r\n weekdays[4] = 'Thursday';\r\n weekdays[5] = 'Friday';\r\n weekdays[6] = 'Saturday';\r\n\r\n return weekdays[dayOfWeek - 1];\r\n};\r\n\r\nconst formatDayOfMonth = (deliveryDay: number): string => {\r\n return deliveryDay >= 28 ? `${deliveryDay} or last day of month.` : deliveryDay.toString();\r\n};\r\n\r\nconst formatSubscriptionFreqencyType = (params: ValueFormatterParams): string => {\r\n return SubscriptionFrequencyType[params.value];\r\n};\r\n\r\nconst formatDeliveryDay = (params: ValueGetterParams): string => {\r\n switch (params.data.subscriptionFrequencyType) {\r\n case SubscriptionFrequencyType.Daily:\r\n return 'Every Day';\r\n case SubscriptionFrequencyType.Weekly:\r\n return getWeekday(params.data.deliveryDay) + 's';\r\n case SubscriptionFrequencyType.Monthly:\r\n return formatDayOfMonth(params.data.deliveryDay);\r\n }\r\n};\r\n\r\nconst formatIsStarted = (params: ValueFormatterParams): string => {\r\n return params.value ? 'Yes' : 'No';\r\n};\r\n\r\nconst formatLastDeliveryDate = (params: ValueGetterParams): string => {\r\n const { timeZone, lastDelivered } = params.data;\r\n const tz = findIana(timeZone);\r\n const currentUsersTimeZone = tz.length ? tz[0] : '';\r\n const isValid = moment(lastDelivered, moment.ISO_8601).isValid();\r\n\r\n return isValid\r\n ? (moment.utc(lastDelivered).clone() as any).tz(currentUsersTimeZone).format('llll')\r\n : 'Never Delivered';\r\n};\r\n\r\nconst formatNextDeliveryDate = (params: ValueGetterParams): string => {\r\n const { timeZone, nextDeliveryStart, isStarted } = params.data;\r\n if (!isStarted) {\r\n return '';\r\n }\r\n\r\n const tz = findIana(timeZone);\r\n const currentUsersTimeZone = tz.length ? tz[0] : '';\r\n const isValid = moment(nextDeliveryStart, moment.ISO_8601).isValid();\r\n\r\n return isValid\r\n ? (moment.utc(nextDeliveryStart).clone() as any).tz(currentUsersTimeZone).format('llll')\r\n : 'Error';\r\n};\r\n\r\nexport const adhocReportSubscriptionGrid: Readonly = {\r\n columnDefs: [\r\n {\r\n headerName: 'Report',\r\n field: 'adhocReportName',\r\n },\r\n {\r\n headerName: 'Frequency',\r\n field: 'subscriptionFrequencyType',\r\n valueFormatter: formatSubscriptionFreqencyType,\r\n },\r\n {\r\n headerName: 'Delivery Day',\r\n field: 'deliveryDay',\r\n valueGetter: formatDeliveryDay,\r\n },\r\n {\r\n headerName: 'Delivery Time of Day',\r\n field: 'deliveryTimeOfDay',\r\n },\r\n {\r\n headerName: 'Time Zone',\r\n field: 'timeZone',\r\n },\r\n {\r\n headerName: 'Started',\r\n field: 'isStarted',\r\n valueFormatter: formatIsStarted,\r\n },\r\n {\r\n headerName: 'Last Delivery Date',\r\n field: 'lastDelivered',\r\n valueGetter: formatLastDeliveryDate,\r\n },\r\n {\r\n headerName: 'Next Delivery Date',\r\n field: 'nextDeliveryStart',\r\n valueGetter: formatNextDeliveryDate,\r\n },\r\n {\r\n suppressMenu: true,\r\n template: `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n `,\r\n cellClass: 'medium-text-right',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true, suppressMenu: true },\r\n};\r\n","export default class OrganizationUtility {\r\n static flattenOrganization(array, parentName) {\r\n var result = [];\r\n array.forEach(function (node) {\r\n node.parentOrganizationName = parentName;\r\n result.push(node);\r\n if (Array.isArray(node.children)) {\r\n\r\n result = result.concat(OrganizationUtility.flattenOrganization(node.children, node.name));\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport Logger from 'infrastructure/logger';\r\n\r\nexport interface DashboardSettings {\r\n maxConcurrentWidgetLoads: number;\r\n enableWidgetLoadTimingLogs: boolean;\r\n}\r\n\r\nconst defaultSettings: DashboardSettings = {\r\n maxConcurrentWidgetLoads: 6,\r\n enableWidgetLoadTimingLogs: false,\r\n};\r\n\r\n@autoinject\r\nexport default class DashboardSettingsService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private logger: Logger,\r\n ) {\r\n this.logger.name = 'dashboard-settings-service';\r\n }\r\n\r\n async getSettings(): Promise {\r\n try {\r\n const settings = (await this.httpClient.get(\r\n 'dashboard/settings',\r\n )) as unknown as DashboardSettings;\r\n\r\n return {\r\n ...settings,\r\n maxConcurrentWidgetLoads: Math.max(\r\n 1,\r\n settings.maxConcurrentWidgetLoads || defaultSettings.maxConcurrentWidgetLoads,\r\n ),\r\n };\r\n } catch (error) {\r\n this.logger.warn('Failed to load dashboard settings; using defaults.', error);\r\n return { ...defaultSettings };\r\n }\r\n }\r\n}\r\n","export default function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n","import SelectorOption from 'infrastructure/selector-option';\r\n\r\nexport default function getPointZoneOptions(): SelectorOption[] {\r\n return [\r\n { title: '1', value: 1 },\r\n { title: '2', value: 2 },\r\n { title: '3', value: 3 },\r\n { title: '4', value: 4 },\r\n ];\r\n}\r\n","import { CustomError } from 'infrastructure/custom-error';\r\n\r\nexport default abstract class ValidationErrorFormatter {\r\n private static formatValidationErrors(apiErrorData: any): string {\r\n const validationErrorMessage: string[] = [];\r\n for (let i = 0; i < apiErrorData.length; i++) {\r\n validationErrorMessage.push(apiErrorData[i].errorMessage);\r\n }\r\n\r\n return validationErrorMessage.join(', ');\r\n }\r\n\r\n public static format(defaultMessage: string, error: any): string {\r\n let { apiErrorCode, apiErrorData, errorCode, message } = error;\r\n const userErrorCode = errorCode || apiErrorData?.apiErrorCode || apiErrorCode;\r\n let userErrorMessage =\r\n (error instanceof CustomError && message) || apiErrorData?.message || defaultMessage;\r\n\r\n if (userErrorCode === 400) {\r\n userErrorMessage = this.formatValidationErrors(apiErrorData);\r\n }\r\n\r\n return userErrorMessage;\r\n }\r\n}\r\n","export class CustomError extends Error {\r\n errorCode: number;\r\n constructor(message: string, errorCode: number) {\r\n super(message);\r\n Object.setPrototypeOf(this, CustomError.prototype);\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, CustomError);\r\n }\r\n this.errorCode = errorCode;\r\n }\r\n}\r\n\r\n//TODO: Define CustomError Codes\r\n// 1 : Exception\r\n// 4 : Client side validation\r\n// ? : ?\r\n","import {\r\n AgPromise,\r\n ColDef,\r\n ColGroupDef,\r\n GridOptions,\r\n ICellRendererParams,\r\n RowNode,\r\n ValueFormatterParams,\r\n} from 'ag-grid-community';\r\nimport { ValueGetterParams } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport { agFormatDateToLocale } from 'infrastructure/ag-grid/ag-value-formatters';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\nimport CompareUtility from '../../../infrastructure/compare-utility';\r\nimport { PointTestResult } from './point-test-result';\r\n\r\nconst sampleLinkTemplate =\r\n '${data.sampleExternalId}';\r\nclass AgSampleIdCellRenderer extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(sampleLinkTemplate);\r\n }\r\n\r\n init(params: ICellRendererParams): void | AgPromise {\r\n const { data, node }: { data: PointTestResult; node: RowNode } = params;\r\n if (data.testId > 0 && data.passed === false) {\r\n node.setRowSelectable(true);\r\n node.selectable = true;\r\n } else {\r\n node.setRowSelectable(false);\r\n node.selectable = false;\r\n }\r\n\r\n super.init(params);\r\n }\r\n}\r\n\r\nconst formatTestResult = (params: ValueGetterParams): string => {\r\n const { confirmation, displayValue } = params.data;\r\n return confirmation?.length ? confirmation : displayValue;\r\n};\r\n\r\nconst formatOutcome = (params: ValueFormatterParams): string => {\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const { passed, hasSpecification } = params.data;\r\n if (passed) return 'Pass';\r\n\r\n if (passed === null) {\r\n return hasSpecification ? 'Incomplete' : 'Spec Required';\r\n }\r\n\r\n return 'Fail';\r\n};\r\n\r\nconst columnDefs: (ColDef | ColGroupDef)[] = [\r\n {\r\n headerName: 'Sample ID',\r\n field: 'sampleExternalId',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n headerCheckboxSelection: true,\r\n headerCheckboxSelectionFilteredOnly: true,\r\n checkboxSelection: true,\r\n cellRenderer: AgSampleIdCellRenderer,\r\n },\r\n {\r\n headerName: 'Collection Date',\r\n field: 'sampleCollectionDate',\r\n comparator: CompareUtility.dateCompare,\r\n sort: 'desc',\r\n valueFormatter: agFormatDateToLocale,\r\n },\r\n {\r\n headerName: 'Test Method',\r\n field: 'testMethodDisplayName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n },\r\n {\r\n headerName: 'Pass/Fail',\r\n field: 'passed',\r\n valueFormatter: formatOutcome,\r\n },\r\n {\r\n headerName: 'Result',\r\n field: 'displayValue',\r\n valueGetter: formatTestResult,\r\n minWidth: 75,\r\n },\r\n {\r\n headerName: 'Plan Name',\r\n field: 'planName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n },\r\n {\r\n headerName: 'Collection Type',\r\n field: 'collectionType',\r\n },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: columnDefs,\r\n suppressContextMenu: true,\r\n suppressColumnVirtualisation: true,\r\n onFirstDataRendered(event) {\r\n event.columnApi.autoSizeAllColumns();\r\n },\r\n};\r\n\r\nconst pointTestResultGrid = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('map-point-test-result-grid')\r\n .build();\r\n\r\nexport { pointTestResultGrid };\r\n","var errorMessages = new Map([\r\n [300, 'Your password has expired.'], // PasswordExpired\r\n [301, 'Your account is currently locked. Please contact your system administrator.'], // UserLockedOut\r\n [302, 'You have exceeded the maximum number of allowed login attempts. Your account has been locked. Please contact your system administrator.'], // ExceededAllowedFailedLoginAttempts\r\n [303, 'Due to your recent inactivity, your account will need to be verified before you can log in again. An email has been sent to you containing instructions as to how to proceed.'], // ExceededMaxDaysAllowedBetweenLogins\r\n [304, 'Due to your recent inactivity, you need to verify your account by using the login URL sent to you via email. Another email has been sent to you with a new login URL, please disregard any previous login URLs sent via email.'], // IdentityVerificationTokenMissing\r\n [305, 'The account verification token specified in the URL does not match the one that was generated for you. Another email has been sent to you with a new login URL, please disregard any previous login URLs sent via email.'], // IdentityVerificationTokenDoesNotMatch\r\n [306, 'The account verification token generated for you has expired. Another email has been sent to you with a new login URL, please disregard any previous login URLs sent via email.'], // IdentityVerificationTokenExpired\r\n [308, 'You must specify both username and password.'], // NoUsernameAndOrPasswordProvided\r\n [310, 'The specified account is not active. Please contact your system administrator.'], // UserNotActive\r\n [311, 'The specified account does not have access to any part of the application. Please contact your system administrator.'], // NoOrganizationApplicationModules\r\n [312, 'The specified account does not have access to any organizations. Please contact your system administrator.'], // NoOverseerOrganizations\r\n]);\r\n\r\nexport default class LoginErrorMessageProvider {\r\n static getErrorMessage(httpResponseMessageOrApiError) {\r\n var apiErrorCode = httpResponseMessageOrApiError.apiErrorCode;\r\n if (apiErrorCode && errorMessages.has(apiErrorCode))\r\n return errorMessages.get(apiErrorCode);\r\n \r\n if (httpResponseMessageOrApiError.statusCode === 401)\r\n return 'Invalid credentials.';\r\n\r\n return 'An unexpected error occurred. Please try again.';\r\n }\r\n};\r\n","import { autoinject, inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport AmsCoaExportService from './ams-coa-export-service';\r\nimport AmsCoaExport from './ams-coa-export';\r\nimport moment from 'moment';\r\n\r\n@autoinject\r\nexport class CustomerTestImportDetail {\r\n minCollectionDate: Date;\r\n maxCollectionDate: Date;\r\n validationController: ValidationController;\r\n formChanged: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n validationControllerFactory: ValidationControllerFactory,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private amsCoaExportService: AmsCoaExportService) {\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.logger.name = 'customer-test-import-detail';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n }\r\n\r\n activate() {\r\n ValidationRules\r\n .ensure('minCollectionDate').required()\r\n .ensure('maxCollectionDate').required().satisfies(_ => this.minCollectionDate?.getTime() < this.maxCollectionDate?.getTime())\r\n .on(this);\r\n\r\n this.validationController.addObject(this);\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n async createAmsCoaExport() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.amsCoaExportService.createAmsCoaExport({\r\n minCollectionDate: moment(this.minCollectionDate).startOf('day').format('YYYY-MM-DD') + 'T00:00:00Z',\r\n maxCollectionDate: moment(this.maxCollectionDate).startOf('day').add(1, 'days').format('YYYY-MM-DD') + 'T00:00:00Z'\r\n });\r\n\r\n this.formChanged = false;\r\n await this.dialogPresenter.showAlert('AMS CoA Export Created', 'The requested export has been created. Once the export has been fully processed, you will receive an email with access to the exported file.');\r\n this.router.navigateToRoute('dashboard');\r\n } catch (error) {\r\n this.logger.error('Error uploading test data file.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Test Data File',\r\n 'There was an error uploading the test data file. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { DialogService } from 'aurelia-dialog';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { inject, PLATFORM } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { activationStrategy } from 'aurelia-router';\r\nimport 'foundation-datepicker-js';\r\nimport 'foundation-sites';\r\nimport $ from 'jquery';\r\nimport 'select2';\r\nimport FormChangeCheckStep from './infrastructure/form-change-check-step';\r\nimport OrganizationService from './organizations/organization-service';\r\nimport AuthorizationCheckStep from './security/navigation/authorization-check-step';\r\nimport NavigationAuthorizer from './security/navigation/navigation-authorizer';\r\nimport SecurityService from './security/security-service';\r\n\r\n@inject(\r\n HttpClient,\r\n EventAggregator,\r\n DialogService,\r\n NavigationAuthorizer,\r\n SecurityService,\r\n OrganizationService,\r\n)\r\nexport class App {\r\n constructor(\r\n httpClient,\r\n eventAggregator,\r\n dialogService,\r\n navigationAuthorizer,\r\n securityService,\r\n organizationService,\r\n ) {\r\n this.httpClient = httpClient;\r\n this.httpClient.configure((config) => config.withInterceptor(this));\r\n\r\n this.eventAggregator = eventAggregator;\r\n this.dialogService = dialogService;\r\n this.navigationAuthorizer = navigationAuthorizer;\r\n this.unauthenticatedStuffQueue = [];\r\n this.attachedPromise = new Promise((resolve) => {\r\n this.attachedPromiseResolve = resolve;\r\n });\r\n\r\n this.securityService = securityService;\r\n this.organizationService = organizationService;\r\n\r\n this.handleLogin = this.handleLogin.bind(this);\r\n this.handleLogout = this.handleLogout.bind(this);\r\n this.handleRouterNavigationSuccess = this.handleRouterNavigationSuccess.bind(this);\r\n this.updateIsCurrnetUserInternal();\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n updateIsCurrnetUserInternal() {\r\n this.isCurrentUserInternal = this.securityService.isCurrentUserInternal();\r\n }\r\n\r\n handleLogin() {\r\n this.updateIsCurrnetUserInternal();\r\n }\r\n\r\n handleLogout() {\r\n this.updateIsCurrnetUserInternal();\r\n }\r\n\r\n handleRouterNavigationSuccess() {\r\n this.locationTestingRouteActive =\r\n this.router &&\r\n this.router.currentInstruction &&\r\n this.router.currentInstruction.fragment.toLowerCase().startsWith('/location-testing');\r\n }\r\n\r\n configureRouter(config, router) {\r\n this.router = router;\r\n\r\n config.addAuthorizeStep(AuthorizationCheckStep);\r\n config.addPreActivateStep(FormChangeCheckStep);\r\n\r\n config.mapUnknownRoutes((instruction) => {\r\n return { route: '', redirect: 'dashboard' };\r\n });\r\n\r\n config.map([\r\n // Dashboard\r\n {\r\n route: ['', 'dashboard'],\r\n name: 'dashboard',\r\n moduleId: PLATFORM.moduleName('dashboard/dashboard'),\r\n title: 'Dashboard',\r\n nav: true,\r\n icon: 'television',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n\r\n // Dashboard Widgets\r\n {\r\n route: ['dashboard-widgets'],\r\n name: 'dashboard-widgets',\r\n // Reached only via the 'dashboard' route's redirect (or a direct URL) once an org's\r\n // enableWidgetDashboard flag is on - no separate nav entry.\r\n moduleId: PLATFORM.moduleName('dashboard-widgets/dashboard-widgets'),\r\n title: 'Dashboard Widgets',\r\n nav: false,\r\n icon: 'television',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n authorize: () =>\r\n this.organizationService.checkConfigurationFlag('enableWidgetDashboard'),\r\n },\r\n\r\n // Requests\r\n {\r\n route: 'requests/:id',\r\n name: 'request-detail',\r\n moduleId: PLATFORM.moduleName('requests/request-detail'),\r\n title: 'Request Detail',\r\n href: '/requests/create',\r\n requiredPermission: 'EditRequests',\r\n },\r\n {\r\n route: 'requests',\r\n name: 'request-list',\r\n moduleId: PLATFORM.moduleName('requests/request-list'),\r\n title: 'Requests',\r\n nav: true,\r\n navTitle: 'Requests',\r\n href: '/requests',\r\n icon: 'flask',\r\n requiredPermission: 'EditRequests',\r\n authorize: () =>\r\n this.organizationService.checkConfigurationFlag(\r\n 'allowStandardRequestSubmission',\r\n ),\r\n },\r\n\r\n // Legal\r\n {\r\n route: 'privacy',\r\n name: 'privacy',\r\n moduleId: PLATFORM.moduleName('legal/privacy'),\r\n title: 'Privacy Policy',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n },\r\n {\r\n route: 'terms',\r\n name: 'terms',\r\n moduleId: PLATFORM.moduleName('legal/terms'),\r\n title: 'Terms of Use',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n },\r\n\r\n // Location Testing\r\n {\r\n route: 'location-testing/maps',\r\n name: 'map-list',\r\n moduleId: PLATFORM.moduleName('location-testing/maps/map-list'),\r\n title: 'Maps',\r\n nav: true,\r\n icon: 'emma',\r\n requiredPermission: 'ViewMaps',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n {\r\n route: 'location-testing/maps/:id',\r\n name: 'map-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/maps/map-detail'),\r\n title: 'Map Detail',\r\n requiredPermission: 'ViewMaps',\r\n },\r\n {\r\n route: 'location-testing/maps/:id/dashboard',\r\n name: 'map-dashboard',\r\n moduleId: PLATFORM.moduleName('location-testing/maps/map-dashboard'),\r\n title: 'Map Dashboard',\r\n requiredPermission: 'ViewMaps',\r\n group: 'location-testing',\r\n icon: 'map-o',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n {\r\n route: 'location-testing/points',\r\n name: 'point-list',\r\n moduleId: PLATFORM.moduleName('location-testing/points/point-list'),\r\n title: 'Sample Points',\r\n requiredPermission: 'ViewPoints',\r\n group: 'location-testing',\r\n icon: 'map-pin',\r\n },\r\n {\r\n route: 'location-testing/points/:id',\r\n name: 'point-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/points/point-detail'),\r\n title: 'Sample Point Detail',\r\n requiredPermission: 'EditPoints',\r\n },\r\n {\r\n route: 'location-testing/plans',\r\n name: 'plan-list',\r\n moduleId: PLATFORM.moduleName('location-testing/plans/plan-list'),\r\n title: 'Plans',\r\n requiredPermission: 'ViewPlans',\r\n group: 'location-testing',\r\n icon: 'clipboard',\r\n },\r\n {\r\n route: 'location-testing/plans/:id',\r\n name: 'plan-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/plans/plan-detail'),\r\n title: 'Plan Detail',\r\n requiredPermission: 'EditPlans',\r\n },\r\n {\r\n route: 'location-testing/plans/:id/generate-tasks',\r\n name: 'plan-generate-tasks',\r\n moduleId: PLATFORM.moduleName('location-testing/plans/generate-tasks'),\r\n title: 'Generate Tasks',\r\n requiredPermission: 'EditPlans',\r\n },\r\n\r\n {\r\n route: 'location-testing/remediations',\r\n name: 'remediation-list',\r\n moduleId: PLATFORM.moduleName('location-testing/remediations/remediation-list'),\r\n title: 'Remediations',\r\n group: 'location-testing',\r\n icon: 'exclamation-triangle',\r\n requiredPermission: 'ViewAllRemediations,ViewMyRemediations',\r\n },\r\n {\r\n route: 'location-testing/remediations/:id',\r\n name: 'remediation-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/remediations/remediation-detail'),\r\n title: 'Remediation Detail',\r\n requiredPermission: 'EditRemediations',\r\n },\r\n {\r\n route: 'location-testing/tasks',\r\n name: 'task-list',\r\n moduleId: PLATFORM.moduleName('location-testing/tasks/task-list'),\r\n title: 'Tasks',\r\n requiredPermission: 'ViewAllTasks,ViewMyTasks',\r\n group: 'location-testing',\r\n icon: 'tasks',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n {\r\n route: 'location-testing/tasks/:id',\r\n name: 'task-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/tasks/task-detail'),\r\n title: 'Task Detail',\r\n requiredPermission: 'EditTasks',\r\n },\r\n {\r\n route: 'location-testing/tasks/create-vector-tasks',\r\n name: 'create-vector-tasks',\r\n moduleId: PLATFORM.moduleName('location-testing/tasks/create-vector-tasks'),\r\n title: 'Create Vector Tasks',\r\n requiredPermission: 'EditTasks',\r\n },\r\n {\r\n route: 'location-testing/cap-plans',\r\n name: 'cap-plan-list',\r\n moduleId: PLATFORM.moduleName('location-testing/cap-plans/cap-plan-list'),\r\n title: 'CAP Plans',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewCapPlans',\r\n },\r\n {\r\n route: 'tenant/:tenantId/location-testing/cap-plans/:id?',\r\n name: 'cap-plan-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/cap-plans/cap-plan-detail'),\r\n title: 'CAP Plan Detail',\r\n requiredPermission: 'EditCapPlans',\r\n },\r\n {\r\n route: 'location-testing/customer-test-imports',\r\n name: 'customer-test-import-list',\r\n moduleId: PLATFORM.moduleName(\r\n 'location-testing/customer-test-imports/customer-test-import-list',\r\n ),\r\n title: 'Test Data Imports',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewCustomerTestImports',\r\n },\r\n {\r\n route: 'location-testing/customer-test-imports/create',\r\n name: 'customer-test-import-detail',\r\n moduleId: PLATFORM.moduleName(\r\n 'location-testing/customer-test-imports/customer-test-import-detail',\r\n ),\r\n title: 'Import Test Data',\r\n requiredPermission: 'UploadCustomerTestData',\r\n },\r\n {\r\n route: 'location-testing/requests/create',\r\n name: 'location-testing-request-detail',\r\n moduleId: PLATFORM.moduleName('location-testing/requests/request-detail'),\r\n title: 'Create Request',\r\n requiredPermission: 'EditRequests',\r\n },\r\n\r\n // Status\r\n {\r\n route: 'status',\r\n name: 'status',\r\n moduleId: PLATFORM.moduleName('status/status'),\r\n title: 'Status',\r\n nav: true,\r\n icon: 'check-circle',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewResults',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n\r\n // Reports\r\n {\r\n route: 'reporting/reports',\r\n name: 'report-list',\r\n moduleId: PLATFORM.moduleName('reporting/reports/report-list'),\r\n title: 'Built-In Reports',\r\n nav: true,\r\n icon: 'bar-chart',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewReports',\r\n },\r\n {\r\n route: 'adhoc-report-subscription-list',\r\n name: 'adhoc-report-list',\r\n moduleId: PLATFORM.moduleName(\r\n 'reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-list',\r\n ),\r\n title: 'Ad-Hoc Reports',\r\n nav: true,\r\n icon: 'pie-chart',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewReports',\r\n },\r\n {\r\n route: 'reporting/reports/:id',\r\n name: 'report-detail',\r\n moduleId: PLATFORM.moduleName('reporting/reports/report-detail'),\r\n title: 'Report Detail',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewReports',\r\n },\r\n {\r\n route: 'reporting/adhoc-reports/:id',\r\n name: 'adhoc-report-detail',\r\n moduleId: PLATFORM.moduleName('reporting/adhoc-reports/adhoc-report-detail'),\r\n title: 'Ad-hoc Report Detail',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'RunAdhocReports',\r\n },\r\n {\r\n route: 'reporting/adhoc-reports/adhoc-report-subscriptions',\r\n name: 'adhoc-report-subscription-list',\r\n moduleId: PLATFORM.moduleName(\r\n 'reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-list',\r\n ),\r\n title: 'Ad-hoc Report Subscriptions',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'RunAdhocReports',\r\n },\r\n {\r\n route: 'reporting/adhoc-reports/adhoc-report-subscriptions/:id',\r\n name: 'edit-adhoc-report-subscription',\r\n moduleId: PLATFORM.moduleName(\r\n 'reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-edit',\r\n ),\r\n title: 'Edit Report Subscription',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'RunAdhocReports',\r\n },\r\n {\r\n route: 'reporting/adhoc-reports/adhoc-report-subscription',\r\n name: 'create-adhoc-report-subscription',\r\n moduleId: PLATFORM.moduleName(\r\n 'reporting/adhoc-reports/adhoc-report-subscriptions/adhoc-report-subscription-create',\r\n ),\r\n title: 'Create Report Subscription',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'RunAdhocReports',\r\n },\r\n\r\n // Settings\r\n {\r\n route: 'settings',\r\n name: 'settings',\r\n moduleId: PLATFORM.moduleName('organizations/settings'),\r\n title: 'Settings',\r\n nav: true,\r\n group: 'settings',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewOrganizationSettings',\r\n },\r\n {\r\n route: 'roles',\r\n name: 'role-list',\r\n moduleId: PLATFORM.moduleName('roles/role-list'),\r\n title: 'Manage Roles',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewRoles',\r\n },\r\n {\r\n route: 'roles/:id',\r\n name: 'role-detail',\r\n moduleId: PLATFORM.moduleName('roles/role-detail'),\r\n title: 'Role Detail',\r\n requiredPermission: 'EditRoles',\r\n },\r\n {\r\n route: 'location-testing/plan-management',\r\n name: 'plan-management',\r\n moduleId: PLATFORM.moduleName(\r\n 'location-testing/plan-management/plan-management-list',\r\n ),\r\n title: 'Plan Management',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewPlanManagement',\r\n },\r\n {\r\n route: 'roles/:id/users',\r\n name: 'role-move-users',\r\n moduleId: PLATFORM.moduleName('roles/role-move-users'),\r\n title: 'Reassign User Roles',\r\n requiredPermission: 'AssignRoles',\r\n },\r\n\r\n {\r\n route: 'organizations',\r\n name: 'organization-list',\r\n moduleId: PLATFORM.moduleName('organizations/organization-list'),\r\n title: 'Manage Organizations',\r\n nav: true,\r\n group: 'settings',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'organizations/:id',\r\n name: 'organization-detail',\r\n moduleId: PLATFORM.moduleName('organizations/organization-detail'),\r\n title: 'Organization Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n\r\n {\r\n route: 'test-methods',\r\n name: 'test-method-list',\r\n moduleId: PLATFORM.moduleName('test-methods/test-method-list'),\r\n title: 'Latest Price Quotes',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewPriceQuotes',\r\n },\r\n {\r\n route: 'location-testing/test-method-management',\r\n name: 'test-method-management',\r\n moduleId: PLATFORM.moduleName(\r\n 'location-testing/test-method-management/test-method-management-list',\r\n ),\r\n title: 'Test Method Management',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewTestMethodManagement',\r\n },\r\n\r\n {\r\n route: 'specifications',\r\n name: 'specification-list',\r\n moduleId: PLATFORM.moduleName('specifications/specification-list'),\r\n title: 'Manage Specifications',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewSpecifications',\r\n },\r\n {\r\n route: 'specifications/:id',\r\n name: 'specification-detail',\r\n moduleId: PLATFORM.moduleName('specifications/specification-detail'),\r\n title: 'Specification Detail',\r\n requiredPermission: 'EditSpecifications',\r\n },\r\n {\r\n route: 'remediation-root-causes',\r\n name: 'remediation-root-cause-list',\r\n moduleId: PLATFORM.moduleName(\r\n 'remediation-root-causes/remediation-root-cause-list',\r\n ),\r\n title: 'Manage Remediation Root Causes',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewAllRemediations',\r\n },\r\n\r\n {\r\n route: 'password-requirements',\r\n name: 'password-requirements',\r\n moduleId: PLATFORM.moduleName('password-requirements/password-requirements'),\r\n title: 'Password Requirements',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewPasswordRequirements',\r\n },\r\n {\r\n route: 'users',\r\n name: 'user-list',\r\n moduleId: PLATFORM.moduleName('users/user-list'),\r\n title: 'Manage Users',\r\n allowedUserTypes: 'both',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewUsers',\r\n },\r\n {\r\n route: 'users/:id',\r\n name: 'user-detail',\r\n moduleId: PLATFORM.moduleName('users/user-detail'),\r\n title: 'User Detail',\r\n allowedUserTypes: 'both',\r\n requiredPermission: 'ViewUsers',\r\n },\r\n {\r\n route: 'login-audit',\r\n name: 'login-audit',\r\n moduleId: PLATFORM.moduleName('login-audit/login-audit'),\r\n title: 'User Login Audit',\r\n nav: true,\r\n group: 'settings',\r\n requiredPermission: 'ViewUserLogins',\r\n },\r\n {\r\n route: 'login-audit/user/:id',\r\n name: 'login-audit/user',\r\n moduleId: PLATFORM.moduleName('login-audit/login-audit-detail'),\r\n title: 'Login Audit User Detail',\r\n requiredPermission: 'ViewUserLogins',\r\n },\r\n {\r\n route: 'labs',\r\n name: 'lab-list',\r\n moduleId: PLATFORM.moduleName('labs/lab-list'),\r\n title: 'Labs',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n nav: true,\r\n group: 'settings',\r\n },\r\n {\r\n route: 'labs/:id',\r\n name: 'lab-detail',\r\n moduleId: PLATFORM.moduleName('labs/lab-detail'),\r\n title: 'Lab Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'global-messaging',\r\n name: 'global-message-list',\r\n moduleId: PLATFORM.moduleName('global-messaging/global-message-list'),\r\n title: 'Global Messages',\r\n allowedUserTypes: 'globalMessenger',\r\n nav: true,\r\n group: 'settings',\r\n },\r\n {\r\n route: 'global-messaging/:id',\r\n name: 'global-message-detail',\r\n moduleId: PLATFORM.moduleName('global-messaging/global-message-detail'),\r\n title: 'Global Message Detail',\r\n allowedUserTypes: 'globalMessenger',\r\n },\r\n {\r\n route: 'news-items',\r\n name: 'news-item-list',\r\n moduleId: PLATFORM.moduleName('news-items/news-item-list'),\r\n title: 'News Items',\r\n allowedUserTypes: 'internal',\r\n nav: true,\r\n group: 'settings',\r\n },\r\n {\r\n route: 'news-items/:id',\r\n name: 'news-item-detail',\r\n moduleId: PLATFORM.moduleName('news-items/news-item-detail'),\r\n title: 'News Item Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n\r\n {\r\n route: 'label-templates',\r\n name: 'label-template-list',\r\n moduleId: PLATFORM.moduleName('label-templates/label-template-list'),\r\n title: 'Label Templates',\r\n requiredPermission: 'ViewLabelTemplates',\r\n nav: true,\r\n group: 'settings',\r\n },\r\n {\r\n route: 'label-templates/:id',\r\n name: 'label-template-detail',\r\n moduleId: PLATFORM.moduleName('label-templates/label-template-detail'),\r\n title: 'Label Template Detail',\r\n requiredPermission: 'EditLabelTemplates',\r\n },\r\n\r\n {\r\n route: 'export-task-collection-templates',\r\n name: 'export-task-collection-template-list',\r\n moduleId: PLATFORM.moduleName(\r\n 'export-task-collection-templates/export-task-collection-template-list',\r\n ),\r\n title: 'Export Task Collection Templates',\r\n requiredPermission: 'ViewExportTaskCollectionTemplates',\r\n nav: true,\r\n group: 'settings',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n {\r\n route: 'export-task-collection-templates/:id',\r\n name: 'export-task-collection-template-detail',\r\n moduleId: PLATFORM.moduleName(\r\n 'export-task-collection-templates/export-task-collection-template-detail',\r\n ),\r\n title: 'Export Task Collection Template Detail',\r\n requiredPermission: 'EditExportTaskCollectionTemplates',\r\n },\r\n\r\n {\r\n route: 'segmentation-templates',\r\n name: 'segmentation-template-list',\r\n moduleId: PLATFORM.moduleName('segmentation-templates/segmentation-template-list'),\r\n title: 'Segmentation Templates',\r\n requiredPermission: 'ViewSegmentationTemplates',\r\n nav: true,\r\n group: 'settings',\r\n authorize: () =>\r\n this.organizationService.checkConfigurationFlag('hasSegmentAccess'),\r\n },\r\n {\r\n route: 'segmentation-templates/:id',\r\n name: 'segmentation-template-detail',\r\n moduleId: PLATFORM.moduleName(\r\n 'segmentation-templates/segmentation-template-detail',\r\n ),\r\n title: 'Segmentation Template Detail',\r\n requiredPermission: 'EditSegmentationTemplates',\r\n },\r\n\r\n // Help Pages\r\n {\r\n route: 'help/glossary',\r\n name: 'glossary',\r\n moduleId: PLATFORM.moduleName('help/glossary/glossary'),\r\n title: 'Glossary',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'external',\r\n ignorePermissions: true,\r\n icon: 'book',\r\n },\r\n {\r\n route: 'help/glossary-terms',\r\n name: 'glossary-term-list',\r\n moduleId: PLATFORM.moduleName('help/glossary/glossary-term-list'),\r\n title: 'Manage Glossary Terms',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'internal',\r\n icon: 'book',\r\n },\r\n {\r\n route: 'help/glossary-terms/:id',\r\n name: 'glossary-term-detail',\r\n moduleId: PLATFORM.moduleName('help/glossary/glossary-term-detail'),\r\n title: 'Glossary Term Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'help/user-guides',\r\n name: 'user-guide-list',\r\n moduleId: PLATFORM.moduleName('help/user-guides/user-guide-list'),\r\n title: 'Guides',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n icon: 'file-text-o',\r\n },\r\n {\r\n route: 'help/user-guides/:id',\r\n name: 'user-guide-detail',\r\n moduleId: PLATFORM.moduleName('help/user-guides/user-guide-detail'),\r\n title: 'Guide',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n },\r\n {\r\n route: 'help/help-pages/:code',\r\n name: 'help-page-detail',\r\n moduleId: PLATFORM.moduleName('help/user-guides/user-guide-detail'),\r\n title: 'Help Page',\r\n allowedUserTypes: 'both',\r\n ignorePermissions: true,\r\n },\r\n // {\r\n // route: 'help/videos',\r\n // name: 'video-list',\r\n // moduleId: PLATFORM.moduleName('help/videos/video-list'),\r\n // title: 'Videos',\r\n // nav: true,\r\n // group: 'help',\r\n // allowedUserTypes: 'both',\r\n // ignorePermissions: true,\r\n // icon: 'play-circle',\r\n // },\r\n // {\r\n // route: 'help/videos/:id',\r\n // name: 'video-detail',\r\n // moduleId: PLATFORM.moduleName('help/videos/video-detail'),\r\n // title: 'Video',\r\n // allowedUserTypes: 'both',\r\n // ignorePermissions: true,\r\n // },\r\n {\r\n route: 'help/support',\r\n name: 'support',\r\n moduleId: PLATFORM.moduleName('help/support/support'),\r\n title: 'Support',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'external',\r\n ignorePermissions: true,\r\n icon: 'envelope-o',\r\n },\r\n {\r\n route: 'help/support-topics',\r\n name: 'support-topic-list',\r\n moduleId: PLATFORM.moduleName('help/support/support-topic-list'),\r\n title: 'Manage Support Topics',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'internal',\r\n icon: 'envelope-o',\r\n },\r\n {\r\n route: 'help/support-topics/:id',\r\n name: 'support-topic-detail',\r\n moduleId: PLATFORM.moduleName('help/support/support-topic-detail'),\r\n title: 'Support Topic Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'help/faq-groups',\r\n name: 'faq-group-list',\r\n moduleId: PLATFORM.moduleName('help/faqs/faq-group-list'),\r\n title: 'Manage FAQ Groups',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'internal',\r\n icon: 'question-circle-o',\r\n },\r\n {\r\n route: 'help/faq-groups/:id',\r\n name: 'faq-group-detail',\r\n moduleId: PLATFORM.moduleName('help/faqs/faq-group-detail'),\r\n title: 'FAQ Group Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'help/faq-groups/:id/faqs',\r\n name: 'faq-list',\r\n moduleId: PLATFORM.moduleName('help/faqs/faq-list'),\r\n title: 'Manage FAQs',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'help/faqs/:id',\r\n name: 'faq-detail',\r\n moduleId: PLATFORM.moduleName('help/faqs/faq-detail'),\r\n title: 'FAQ Detail',\r\n allowedUserTypes: 'internal',\r\n },\r\n {\r\n route: 'help/faqs',\r\n name: 'faqs',\r\n moduleId: PLATFORM.moduleName('help/faqs/faqs'),\r\n title: 'FAQs',\r\n nav: true,\r\n group: 'help',\r\n allowedUserTypes: 'external',\r\n ignorePermissions: true,\r\n icon: 'question-circle-o',\r\n },\r\n\r\n // AMS CoA Exports\r\n {\r\n route: 'ams-coa-exports/create',\r\n name: 'ams-coa-export-create',\r\n moduleId: PLATFORM.moduleName('ams-coa-exports/create-ams-coa-export'),\r\n title: 'AMS CoA Export',\r\n nav: true,\r\n group: 'settings',\r\n allowedUserTypes: 'internal',\r\n icon: 'file-export',\r\n },\r\n\r\n // Test Results\r\n {\r\n route: 'test-results/test-results-list',\r\n name: 'test-results-list',\r\n moduleId: PLATFORM.moduleName('test-results/test-results-list'),\r\n title: 'Test Results',\r\n nav: true,\r\n icon: 'thermometer-half',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewResults',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n },\r\n\r\n // Partial Test Results\r\n {\r\n route: 'partial-test-results/partial-test-results-list',\r\n name: 'partial-test-results-list',\r\n moduleId: PLATFORM.moduleName('partial-test-results/partial-test-results-list'),\r\n title: 'Partial Test Results',\r\n nav: true,\r\n icon: 'list-alt',\r\n allowedUserTypes: 'external',\r\n requiredPermission: 'ViewPartialResults',\r\n activationStrategy: activationStrategy.invokeLifecycle,\r\n authorize: async () => {\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n const { partialTestResultLabs } =\r\n await this.organizationService.getConfigurationValues(\r\n ['partialTestResultLabs'],\r\n organizationId,\r\n );\r\n\r\n return partialTestResultLabs?.length > 0;\r\n },\r\n },\r\n ]);\r\n }\r\n\r\n attached() {\r\n this.userLoginSubscription = this.eventAggregator.subscribe('user.login', this.handleLogin);\r\n this.userLogoutSubscription = this.eventAggregator.subscribe(\r\n 'user.logout',\r\n this.handleLogout,\r\n );\r\n this.routerNavigationSuccessSubscription = this.eventAggregator.subscribe(\r\n 'router:navigation:success',\r\n this.handleRouterNavigationSuccess,\r\n );\r\n\r\n (async () => {\r\n this.baseNavItems = [];\r\n\r\n for (let item of this.router.navigation)\r\n if (!item.config.group && (await this.navigationAuthorizer.hasAccess(item.config)))\r\n this.baseNavItems.push(item);\r\n\r\n this.handleRouterNavigationSuccess();\r\n\r\n this.attachedPromiseResolve();\r\n\r\n // Activate off canvas menu on hover.\r\n $(() => {\r\n $('.off-canvas.position-left li').hover(\r\n () => $('.off-canvas.position-left').addClass('is-transition-push is-open'),\r\n () => $('.off-canvas.position-left').removeClass('is-transition-push is-open'),\r\n );\r\n });\r\n })();\r\n }\r\n\r\n detached() {\r\n this.userLoginSubscription && this.userLoginSubscription.dispose();\r\n this.userLogoutSubscription && this.userLogoutSubscription.dispose();\r\n this.routerNavigationSuccessSubscription &&\r\n this.routerNavigationSuccessSubscription.dispose();\r\n }\r\n\r\n responseError(message) {\r\n if (message.statusCode !== 401 || message.requestMessage.url === 'sessions/') throw message;\r\n\r\n if (this.securityService.isImpersonating()) {\r\n this.securityService.logout(true);\r\n throw message;\r\n }\r\n\r\n if (this.loginDialogVisible)\r\n return new Promise((resolve, reject) => {\r\n this.unauthenticatedStuffQueue.push({\r\n message,\r\n resolve,\r\n reject,\r\n });\r\n });\r\n\r\n return new Promise((resolve, reject) => {\r\n this.unauthenticatedStuffQueue.push({ message, resolve, reject });\r\n this.loginDialogVisible = true;\r\n\r\n // The dialog must wait until the app's template has been attached.\r\n // If it doesn't wait then, when the app template loads, the dialog will be removed.\r\n this.attachedPromise.then(() => {\r\n this.dialogService\r\n .open({\r\n viewModel: PLATFORM.moduleName('security/login-dialog'),\r\n })\r\n .whenClosed((response) => {\r\n this.loginDialogVisible = false;\r\n\r\n if (response.wasCancelled) {\r\n while (this.unauthenticatedStuffQueue.length) {\r\n let item = this.unauthenticatedStuffQueue.shift();\r\n item.reject(item.message);\r\n }\r\n } else {\r\n while (this.unauthenticatedStuffQueue.length) {\r\n let item = this.unauthenticatedStuffQueue.shift();\r\n this.httpClient\r\n .send(item.message.requestMessage)\r\n .then((successMessage) => {\r\n item.resolve(successMessage);\r\n })\r\n .catch((errorMessage) => {\r\n item.reject(errorMessage);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".client-refresh{line-height:50px;padding:0 0.5rem;text-align:center !important}.client-refresh .circle{width:2rem;height:2rem;border-radius:50%;line-height:2rem;font-size:1em !important;cursor:pointer}.client-refresh .circle-active{color:#fff;box-shadow:0px 0px 1px 1px #0000001a;background-color:#c00}.client-refresh .circle-inactive{color:#ababad}.client-refresh .pulse{animation:pulse-animation 2s infinite}@keyframes pulse-animation{0%{box-shadow:0 0 0 0px rgba(0,0,0,0.2)}100%{box-shadow:0 0 0 20px rgba(0,0,0,0)}}.secondary-header{border-top:solid 1px #b1b1b1;background:#d5d5d6}.secondary-header .columns:first-of-type{margin-left:-10px}.secondary-header button.page-action,.secondary-header .button.page-action{vertical-align:top;margin-bottom:0 !important;padding:0 10px 0 40px;margin:0 !important;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;height:3.125rem;line-height:normal !important}.secondary-header button.page-action:hover,.secondary-header button.page-action:active,.secondary-header button.page-action:focus,.secondary-header .button.page-action:hover,.secondary-header .button.page-action:active,.secondary-header .button.page-action:focus{background:#dedede}.secondary-header button.page-action:hover i.fa,.secondary-header button.page-action:active i.fa,.secondary-header button.page-action:focus i.fa,.secondary-header .button.page-action:hover i.fa,.secondary-header .button.page-action:active i.fa,.secondary-header .button.page-action:focus i.fa{color:#cc2350}.secondary-header button.page-action i.fa,.secondary-header .button.page-action i.fa{display:inline-block;color:#8f1838;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;height:3.125rem;width:1.5rem;line-height:3.125rem;text-align:center;float:left}.top-bar .separator,.secondary-header .separator,.fixed-secondary-header .separator{width:1px;height:30px;background:#bbbdc5;display:inline-block;position:relative;top:11px;margin-left:6px}label.is-invalid-label i.fa{color:#db2121}label i.fa{font-size:9px;position:relative;top:-1px;color:#585858}.select2-results__option .small{font-size:13px;padding:3px 0 5px 0;color:#666}.select2-results__option--highlighted .small{color:#fff}data-grid input[type='text']{height:2.4375rem !important}data-grid .select2-container{margin:0}data-grid datepicker i.fa.fa-calendar{font-size:13px;top:13px !important}data-grid .ag-cell.row-actions{text-align:left}data-grid .row-actions-flex{display:flex;flex-wrap:wrap;row-gap:10px;column-gap:1em;opacity:0;transition:ease all 0.25s}data-grid .row-actions-flex:hover{opacity:1}data-grid .row-actions-flex>*{display:flex}data-grid error-tooltip span.has-tip.error-tip{right:3px;top:-4px}data-grid .blank-segment-cell{background-color:#666}.form .row .columns.icon datepicker .fa,.form .row .columns.icon .is-invalid-input+.fa{top:0 !important}.fixed-secondary-header info-tip{display:inline-block;vertical-align:top;position:relative}.fixed-secondary-header info-tip i.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;color:#585858;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;height:3.125rem;width:1.5rem;line-height:3.125rem;text-align:center;float:left}input.keyhold-active{background:#fff;cursor:crosshair}select2.keyhold-active,datepicker.keyhold-active{cursor:crosshair}select2.keyhold-active input,select2.keyhold-active .select2-selection,datepicker.keyhold-active input,datepicker.keyhold-active .select2-selection{cursor:crosshair}date-range-filter datepicker i.fa.fa-calendar{display:none}input[type='checkbox'],input[type='radio']{-webkit-appearance:none;background-color:#fff;border:1px solid #cacece;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05);padding:0;height:1.25rem;width:1.25rem;display:inline-block;margin:0;position:relative}input[type='checkbox']active,input[type='checkbox']:checked:active,input[type='radio']active,input[type='radio']:checked:active{box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px 1px 3px rgba(0,0,0,0.1)}input[type='checkbox']:checked,input[type='radio']:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}input[type='checkbox']:checked:after,input[type='radio']:checked:after{font-family:FontAwesome;content:'\\\\f00c';position:absolute;top:0;left:2px;color:#cc2350;text-align:center;font-size:0.875rem;height:0.875rem;width:0.875rem}input[type='radio']{border-radius:0.625rem}input[type='radio']:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}input[type='radio']:checked:after{content:'';position:absolute;top:4px;left:4px;background:#cc2350;text-align:center;height:0.625rem;width:0.625rem;border-radius:0.3125rem}input[type='radio']+label{vertical-align:text-bottom;margin-bottom:6px}.top-bar .radio-options{margin-left:10px;position:relative;top:4px}.top-bar input[type='radio']+label{vertical-align:text-bottom;margin-bottom:3px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import {\r\n CellEditingStoppedEvent,\r\n ColDef,\r\n ColGroupDef,\r\n GridOptions,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n} from 'ag-grid-community';\r\nimport { renderAgGridCellForAurelia } from 'infrastructure/aurelia-cell-renderer';\r\n\r\nlet inputRow: any = {};\r\n\r\nconst addNewItem = (params: CellEditingStoppedEvent) => {\r\n if (params.rowPinned !== 'top') {\r\n return;\r\n }\r\n\r\n inputRow.id = 0;\r\n params.api.applyTransaction({ add: [inputRow], addIndex: 0 });\r\n inputRow = {};\r\n params.api.setPinnedTopRowData([inputRow]);\r\n};\r\n\r\nconst removeItem = (params: ValueGetterParams) => {\r\n const { node } = params;\r\n const rowToRemove = params.api.getRowNode(node.id);\r\n\r\n params.api.applyTransaction({\r\n remove: [rowToRemove?.data],\r\n });\r\n};\r\n\r\nconst columnDefs: (ColDef | ColGroupDef)[] = [\r\n {\r\n field: 'name',\r\n headerName: 'Name',\r\n rowDrag: true,\r\n editable: true,\r\n },\r\n {\r\n field: 'id',\r\n headerName: '',\r\n sortable: false,\r\n valueGetter: (params: ValueGetterParams) => {\r\n if (!params.data || params.node.rowPinned === 'top') {\r\n return;\r\n }\r\n\r\n const { data } = params;\r\n data.removeItem = () => removeItem(params);\r\n\r\n return {\r\n data,\r\n template: `\r\n
\r\n \r\n \r\n \r\n
\r\n `,\r\n };\r\n },\r\n cellRenderer: renderAgGridCellForAurelia,\r\n },\r\n];\r\n\r\nexport const remediationRootCauseGridOptions: GridOptions = {\r\n columnDefs,\r\n pinnedTopRowData: [inputRow],\r\n defaultColDef: {\r\n flex: 1,\r\n sortable: true,\r\n filter: false,\r\n valueFormatter: (params: ValueFormatterParams) => {\r\n const { node } = params;\r\n\r\n return node.rowPinned === 'top' ? 'Add Root Cause...' : undefined;\r\n },\r\n },\r\n rowDragManaged: true,\r\n animateRows: true,\r\n getRowStyle: ({ node }) =>\r\n node.rowPinned ? { 'font-weight': 'bold', 'font-style': 'italic' } : {},\r\n onCellEditingStopped: addNewItem,\r\n};\r\n","import { ColDef, ColGroupDef, GridOptions } from 'ag-grid-community';\r\nimport { AgMarkedCellRenderer } from 'infrastructure/ag-grid/ag-cell-renderers';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport { agFormatDateAndTimeToLocale } from 'infrastructure/ag-grid/ag-value-formatters';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\n\r\nconst template = `\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n`;\r\n\r\nclass AgGlobalMessageActionCellRenderer extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(template);\r\n }\r\n}\r\n\r\nconst colDefs: (ColDef | ColGroupDef)[] = [\r\n { headerName: 'Title', field: 'title' },\r\n {\r\n headerName: 'Published Date',\r\n field: 'publishDateTime',\r\n sort: 'desc',\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n },\r\n {\r\n headerName: 'Message',\r\n field: 'message',\r\n flex: 3,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellRenderer: AgMarkedCellRenderer,\r\n },\r\n { field: 'isRead', hide: true },\r\n { field: 'isDeleted', hide: true },\r\n {\r\n colId: 'messageActionCol',\r\n flex: 0.75,\r\n cellRenderer: AgGlobalMessageActionCellRenderer,\r\n },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: colDefs,\r\n defaultColDef: {\r\n enableValue: false,\r\n },\r\n getRowNodeId: function (data) {\r\n return data.id;\r\n },\r\n};\r\n\r\nconst globalMessageNotificationGridOptions: GridOptions = AgStatefulGridBuilder.create(\r\n baseGridOptions,\r\n)\r\n .setDefaults()\r\n .build();\r\n\r\nexport { globalMessageNotificationGridOptions };\r\n","export abstract class OrganizationConfigurationSetting {\r\n static readonly ENABLE_BETA_FEATURES = 'enableBetaFeatures';\r\n}\r\n","export interface ExportTaskCollectionTemplateHeaderOptions {\r\n cellText: string[];\r\n}\r\n\r\nexport const emptyExportTaskCollectionTemplateHeaderOptions = (): ExportTaskCollectionTemplateHeaderOptions => ({\r\n cellText: [],\r\n});\r\n","import { computedFrom } from 'aurelia-framework';\r\nimport { BaseQueryFilter } from 'infrastructure/components/query-filters/base-query-filter';\r\nimport {\r\n DateRangeQuery,\r\n DateRangeQueryFilter,\r\n DateRangeQueryFilterOptionValue,\r\n} from 'infrastructure/components/query-filters/date-range-query-filter';\r\nimport {\r\n MapPlanQuery,\r\n MapPlanQueryFilter,\r\n} from 'infrastructure/components/query-filters/map-plan-query-filter';\r\nimport {\r\n OrganizationsQuery,\r\n OrganizationsQueryFilters,\r\n} from 'infrastructure/components/query-filters/organizations-query-filter';\r\nimport { QueryFiltered } from 'infrastructure/components/query-filters/query-filtered';\r\nimport moment from 'moment';\r\n\r\nexport interface DashboardWidgetQuery {\r\n dateRangeOption?: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n organizationIds: number[];\r\n mapId?: number;\r\n planId?: number;\r\n mapIds: number[];\r\n planIds: number[];\r\n onlyAssignedToMe: boolean;\r\n}\r\n\r\nexport class DashboardWidgetsQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered {\r\n private _filterCaption: string;\r\n private _taskTargetFilterRangeCaption: string;\r\n private _taskTargetDateRangeFormat = 'MMMM D';\r\n\r\n dateRangeQueryFilters: DateRangeQueryFilter;\r\n mapPlanQueryFilters: MapPlanQueryFilter;\r\n organizationQueryFilters: OrganizationsQueryFilters;\r\n onlyAssignedToMe: boolean;\r\n\r\n constructor(\r\n widgetId: string,\r\n defaultDateRangeOption: DateRangeQueryFilterOptionValue = 'today',\r\n includeAllTimeOption = false,\r\n excludeEmmaOptions = false,\r\n defaultOrganizationIds: number[] = [],\r\n ) {\r\n super();\r\n\r\n this.dateRangeQueryFilters = new DateRangeQueryFilter(\r\n widgetId ? `query-filter.date-range.${widgetId}` : null,\r\n defaultDateRangeOption,\r\n includeAllTimeOption,\r\n excludeEmmaOptions,\r\n );\r\n this.mapPlanQueryFilters = new MapPlanQueryFilter();\r\n this.organizationQueryFilters = new OrganizationsQueryFilters(defaultOrganizationIds);\r\n this.onlyAssignedToMe = false;\r\n }\r\n\r\n public get filterCaption(): string {\r\n return this._filterCaption;\r\n }\r\n\r\n public get taskTargetFilterRangeCaption(): string {\r\n return this._taskTargetFilterRangeCaption;\r\n }\r\n\r\n // Selecting 'Specific Range' blanks both dates (DateRangeQueryFilter's own UX for \"you just\r\n // picked this, now choose dates\"), but nothing stops Apply from firing with both still null —\r\n // which backend queries treat as fully unbounded (the same null-bounds mechanism 'allTime'\r\n // formalizes). Widgets that don't offer 'allTime' would silently allow the same unbounded query\r\n // by accident. Widgets that DO offer it just don't bind this — an intentional unbounded query is\r\n // fine, an accidental one isn't.\r\n @computedFrom(\r\n 'dateRangeQueryFilters.dateRangeOption',\r\n 'dateRangeQueryFilters.dateRangeFilterOption.startDate',\r\n 'dateRangeQueryFilters.dateRangeFilterOption.endDate',\r\n )\r\n public get hasIncompleteCustomDateRange(): boolean {\r\n return (\r\n this.dateRangeQueryFilters.dateRangeOption === 'custom' &&\r\n (!this.dateRangeQueryFilters.dateRangeFilterOption.startDate ||\r\n !this.dateRangeQueryFilters.dateRangeFilterOption.endDate)\r\n );\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n this.mapPlanQueryFilters.count +\r\n this.organizationQueryFilters.count +\r\n Number(!!this.onlyAssignedToMe)\r\n );\r\n }\r\n\r\n reset(): void {\r\n this.dateRangeQueryFilters.reset();\r\n this.mapPlanQueryFilters.reset();\r\n this.organizationQueryFilters.reset();\r\n this.onlyAssignedToMe = false;\r\n }\r\n\r\n // Title-bar summary of the widget-shell filter panel's own state — always shown, including\r\n // the default state, so the bar always tells the user what scope the widget's data reflects.\r\n // includeDateRange/includeMapPlan are opt-in per widget, since both sub-filters always exist on\r\n // this class (e.g. date range defaults to 'today') even for widgets whose panel never exposes a\r\n // control for them — showing those defaults would describe a filter the user can't see or change.\r\n buildFilterSummary(options: { includeDateRange?: boolean; includeMapPlan?: boolean } = {}): string {\r\n const parts: string[] = [];\r\n\r\n const orgCount = this.organizationQueryFilters.organizationIds.length;\r\n parts.push(\r\n orgCount > 0 ? `${orgCount} Organization${orgCount === 1 ? '' : 's'}` : 'All Organizations',\r\n );\r\n\r\n if (options.includeDateRange) {\r\n parts.push(this.dateRangeQueryFilters.dateRangeCaption);\r\n }\r\n\r\n if (options.includeMapPlan) {\r\n const count = this.mapPlanQueryFilters.mapPlanIds.length;\r\n const noun = this.mapPlanQueryFilters.mapPlanFilterType === 'plan' ? 'Plan' : 'Map';\r\n parts.push(count > 0 ? `${count} ${noun}${count === 1 ? '' : 's'}` : `All ${noun}s`);\r\n }\r\n\r\n return parts.join(' · ');\r\n }\r\n\r\n getQueryParams(): DashboardWidgetQuery {\r\n return {\r\n ...this.dateRangeQueryFilters.getQueryParams(),\r\n ...this.mapPlanQueryFilters.getQueryParams(),\r\n ...this.organizationQueryFilters.getQueryParams(),\r\n onlyAssignedToMe: this.onlyAssignedToMe,\r\n };\r\n }\r\n\r\n formatTaskTargetFilterCaption(): void {\r\n const startDate = moment(\r\n this.dateRangeQueryFilters.dateRangeFilterOption.startDate,\r\n ).isValid()\r\n ? moment(this.dateRangeQueryFilters.dateRangeFilterOption.startDate).format(\r\n this._taskTargetDateRangeFormat,\r\n )\r\n : '*';\r\n const endDate = moment(this.dateRangeQueryFilters.dateRangeFilterOption.endDate).isValid()\r\n ? moment(this.dateRangeQueryFilters.dateRangeFilterOption.endDate).format(\r\n this._taskTargetDateRangeFormat,\r\n )\r\n : '*';\r\n this._taskTargetFilterRangeCaption = `${startDate} through ${endDate}`;\r\n }\r\n\r\n setFilterValues(params: DashboardWidgetQuery): void {\r\n const dateRangeQuery: DateRangeQuery = {\r\n dateRangeOverride: params.dateRangeOverride,\r\n dateRangeOption: params.dateRangeOption,\r\n targetStartDate: params.targetStartDate,\r\n targetEndDate: params.targetEndDate,\r\n };\r\n const mapPlanQuery: MapPlanQuery = {\r\n mapId: params.mapId,\r\n planId: params.planId,\r\n mapIds: params.mapIds,\r\n planIds: params.planIds,\r\n };\r\n const organizationsQuery: OrganizationsQuery = { organizationIds: params.organizationIds };\r\n const { onlyAssignedToMe } = { ...params };\r\n\r\n this.dateRangeQueryFilters.setFilterValues(dateRangeQuery);\r\n this.mapPlanQueryFilters.setFilterValues(mapPlanQuery);\r\n this.organizationQueryFilters.setFilterValues(organizationsQuery);\r\n\r\n super.setQueryFilteredValues({ onlyAssignedToMe }, this);\r\n\r\n this._filterCaption = super.getFilterCaption(\r\n this.count,\r\n 'Task Target and Request Creation Date Range',\r\n this.dateRangeQueryFilters.dateRangeCaption,\r\n );\r\n this.formatTaskTargetFilterCaption();\r\n }\r\n}\r\n","import { ColDef, ColGroupDef, GridOptions } from 'ag-grid-community';\r\nimport { ColumnState } from 'ag-grid-community/dist/lib/main';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\n\r\nconst isColGroupDefGuard = (\r\n colOrColGroupDef: ColDef | ColGroupDef,\r\n): colOrColGroupDef is ColGroupDef => {\r\n return Object.keys(colOrColGroupDef).includes('children');\r\n};\r\n\r\n/*\r\n * This can theorically support multiple column groups, hence the foreach loops.\r\n * The drawback of the foreach loop is that it doesn't check if a selector option value is present in the col defs\r\n * TODO: Create separate unit test to match generateColumnsDefs w/ testResultsViewBySelectorOptions\r\n */\r\nconst groupColumnDefsBy = (\r\n selectedViewByOption: SelectorOption,\r\n colDefs: (ColDef | ColGroupDef)[],\r\n): (ColDef | ColGroupDef)[] => {\r\n const setRowGroup = (cd: ColDef): void => {\r\n cd.rowGroup = cd.field === selectedViewByOption.value;\r\n };\r\n\r\n colDefs.forEach((cdAny: ColDef | ColGroupDef, i: number) => {\r\n if (isColGroupDefGuard(cdAny)) {\r\n cdAny.children.forEach((cd: ColDef) => {\r\n setRowGroup(cd);\r\n });\r\n } else {\r\n setRowGroup(cdAny);\r\n }\r\n });\r\n\r\n return colDefs;\r\n};\r\n\r\nconst setGroupByColumnDefinitions = (\r\n gridOptions: GridOptions,\r\n selectedViewByOption: SelectorOption,\r\n colDefs: (ColDef | ColGroupDef)[],\r\n autoSortedColumnStateColId: string,\r\n): void => {\r\n const columnDefs = groupColumnDefsBy(selectedViewByOption, colDefs);\r\n const colState: ColumnState = {\r\n colId: autoSortedColumnStateColId || 'ag-Grid-AutoColumn',\r\n sort: 'asc',\r\n };\r\n gridOptions.api?.setColumnDefs(columnDefs);\r\n gridOptions.columnApi?.applyColumnState({\r\n state: [colState],\r\n defaultState: { sort: null },\r\n });\r\n};\r\n\r\nexport { setGroupByColumnDefinitions };\r\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600,700);\"]);\nexports.push([module.id, \"@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css);\"]);\n// Module\nexports.push([module.id, \"/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=\\\"button\\\"],[type=\\\"reset\\\"],[type=\\\"submit\\\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\\\"button\\\"]::-moz-focus-inner,[type=\\\"reset\\\"]::-moz-focus-inner,[type=\\\"submit\\\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\\\"button\\\"]:-moz-focusring,[type=\\\"reset\\\"]:-moz-focusring,[type=\\\"submit\\\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=\\\"checkbox\\\"],[type=\\\"radio\\\"]{box-sizing:border-box;padding:0}[type=\\\"number\\\"]::-webkit-inner-spin-button,[type=\\\"number\\\"]::-webkit-outer-spin-button{height:auto}[type=\\\"search\\\"]{-webkit-appearance:textfield;outline-offset:-2px}[type=\\\"search\\\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.foundation-mq{font-family:\\\"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em\\\"}html{box-sizing:border-box;font-size:100%}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:\\\"Raleway\\\",sans-serif;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}button{padding:0;appearance:none;border:0;border-radius:0;background:transparent;line-height:1;cursor:auto}[data-whatinput='mouse'] button{outline:0}pre{overflow:auto}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block !important}.is-hidden{display:none !important}.row{max-width:100%;margin-right:auto;margin-left:auto}.row::before,.row::after{display:table;content:' ';flex-basis:0;order:1}.row::after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-right:0;padding-left:0}.row .row{margin-right:-.625rem;margin-left:-.625rem}@media print, screen and (min-width: 40em){.row .row{margin-right:-1.875rem;margin-left:-1.875rem}}@media print, screen and (min-width: 64em){.row .row{margin-right:-1.875rem;margin-left:-1.875rem}}@media screen and (min-width: 75em){.row .row{margin-right:-1.875rem;margin-left:-1.875rem}}.row .row.collapse{margin-right:0;margin-left:0}.row.expanded{max-width:none}.row.expanded .row{margin-right:auto;margin-left:auto}.row:not(.expanded) .row{max-width:none}.row.gutter-small>.column,.row.gutter-small>.columns{padding-right:.625rem;padding-left:.625rem}.row.gutter-medium>.column,.row.gutter-medium>.columns{padding-right:1.875rem;padding-left:1.875rem}.column,.columns{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.column,.columns{padding-right:1.875rem;padding-left:1.875rem}}.column,.columns,.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:left;clear:none}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{margin-right:0;margin-left:0;padding-right:0;padding-left:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0%}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{float:left;width:100%}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{float:left;width:50%}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{float:left;width:33.33333%}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{float:left;width:25%}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{float:left;width:20%}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{float:left;width:16.66667%}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{float:left;width:14.28571%}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{float:left;width:12.5%}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-right:0;padding-left:0}.small-collapse .row{margin-right:0;margin-left:0}.expanded.row .small-collapse.row{margin-right:0;margin-left:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-right:.625rem;padding-left:.625rem}.small-centered{margin-right:auto;margin-left:auto}.small-centered,.small-centered:last-child:not(:first-child){float:none;clear:both}.small-uncentered,.small-push-0,.small-pull-0{position:static;margin-right:0;margin-left:0}.small-uncentered,.small-uncentered:last-child:not(:first-child),.small-push-0,.small-push-0:last-child:not(:first-child),.small-pull-0,.small-pull-0:last-child:not(:first-child){float:left;clear:none}.small-uncentered:last-child:not(:first-child),.small-push-0:last-child:not(:first-child),.small-pull-0:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0%}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{float:left;width:100%}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{float:left;width:50%}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{float:left;width:33.33333%}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{float:left;width:25%}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{float:left;width:20%}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{float:left;width:16.66667%}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{float:left;width:14.28571%}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{float:left;width:12.5%}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-right:0;padding-left:0}.medium-collapse .row{margin-right:0;margin-left:0}.expanded.row .medium-collapse.row{margin-right:0;margin-left:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-right:1.875rem;padding-left:1.875rem}.medium-centered{margin-right:auto;margin-left:auto}.medium-centered,.medium-centered:last-child:not(:first-child){float:none;clear:both}.medium-uncentered,.medium-push-0,.medium-pull-0{position:static;margin-right:0;margin-left:0}.medium-uncentered,.medium-uncentered:last-child:not(:first-child),.medium-push-0,.medium-push-0:last-child:not(:first-child),.medium-pull-0,.medium-pull-0:last-child:not(:first-child){float:left;clear:none}.medium-uncentered:last-child:not(:first-child),.medium-push-0:last-child:not(:first-child),.medium-pull-0:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0%}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{float:left;width:100%}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{float:left;width:50%}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{float:left;width:33.33333%}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{float:left;width:25%}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{float:left;width:20%}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{float:left;width:16.66667%}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{float:left;width:14.28571%}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{float:left;width:12.5%}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-right:0;padding-left:0}.large-collapse .row{margin-right:0;margin-left:0}.expanded.row .large-collapse.row{margin-right:0;margin-left:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-right:1.875rem;padding-left:1.875rem}.large-centered{margin-right:auto;margin-left:auto}.large-centered,.large-centered:last-child:not(:first-child){float:none;clear:both}.large-uncentered,.large-push-0,.large-pull-0{position:static;margin-right:0;margin-left:0}.large-uncentered,.large-uncentered:last-child:not(:first-child),.large-push-0,.large-push-0:last-child:not(:first-child),.large-pull-0,.large-pull-0:last-child:not(:first-child){float:left;clear:none}.large-uncentered:last-child:not(:first-child),.large-push-0:last-child:not(:first-child),.large-pull-0:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.xlarge-1{width:8.33333%}.xlarge-push-1{position:relative;left:8.33333%}.xlarge-pull-1{position:relative;left:-8.33333%}.xlarge-offset-0{margin-left:0%}.xlarge-2{width:16.66667%}.xlarge-push-2{position:relative;left:16.66667%}.xlarge-pull-2{position:relative;left:-16.66667%}.xlarge-offset-1{margin-left:8.33333%}.xlarge-3{width:25%}.xlarge-push-3{position:relative;left:25%}.xlarge-pull-3{position:relative;left:-25%}.xlarge-offset-2{margin-left:16.66667%}.xlarge-4{width:33.33333%}.xlarge-push-4{position:relative;left:33.33333%}.xlarge-pull-4{position:relative;left:-33.33333%}.xlarge-offset-3{margin-left:25%}.xlarge-5{width:41.66667%}.xlarge-push-5{position:relative;left:41.66667%}.xlarge-pull-5{position:relative;left:-41.66667%}.xlarge-offset-4{margin-left:33.33333%}.xlarge-6{width:50%}.xlarge-push-6{position:relative;left:50%}.xlarge-pull-6{position:relative;left:-50%}.xlarge-offset-5{margin-left:41.66667%}.xlarge-7{width:58.33333%}.xlarge-push-7{position:relative;left:58.33333%}.xlarge-pull-7{position:relative;left:-58.33333%}.xlarge-offset-6{margin-left:50%}.xlarge-8{width:66.66667%}.xlarge-push-8{position:relative;left:66.66667%}.xlarge-pull-8{position:relative;left:-66.66667%}.xlarge-offset-7{margin-left:58.33333%}.xlarge-9{width:75%}.xlarge-push-9{position:relative;left:75%}.xlarge-pull-9{position:relative;left:-75%}.xlarge-offset-8{margin-left:66.66667%}.xlarge-10{width:83.33333%}.xlarge-push-10{position:relative;left:83.33333%}.xlarge-pull-10{position:relative;left:-83.33333%}.xlarge-offset-9{margin-left:75%}.xlarge-11{width:91.66667%}.xlarge-push-11{position:relative;left:91.66667%}.xlarge-pull-11{position:relative;left:-91.66667%}.xlarge-offset-10{margin-left:83.33333%}.xlarge-12{width:100%}.xlarge-offset-11{margin-left:91.66667%}.xlarge-up-1>.column,.xlarge-up-1>.columns{float:left;width:100%}.xlarge-up-1>.column:nth-of-type(1n),.xlarge-up-1>.columns:nth-of-type(1n){clear:none}.xlarge-up-1>.column:nth-of-type(1n+1),.xlarge-up-1>.columns:nth-of-type(1n+1){clear:both}.xlarge-up-1>.column:last-child,.xlarge-up-1>.columns:last-child{float:left}.xlarge-up-2>.column,.xlarge-up-2>.columns{float:left;width:50%}.xlarge-up-2>.column:nth-of-type(1n),.xlarge-up-2>.columns:nth-of-type(1n){clear:none}.xlarge-up-2>.column:nth-of-type(2n+1),.xlarge-up-2>.columns:nth-of-type(2n+1){clear:both}.xlarge-up-2>.column:last-child,.xlarge-up-2>.columns:last-child{float:left}.xlarge-up-3>.column,.xlarge-up-3>.columns{float:left;width:33.33333%}.xlarge-up-3>.column:nth-of-type(1n),.xlarge-up-3>.columns:nth-of-type(1n){clear:none}.xlarge-up-3>.column:nth-of-type(3n+1),.xlarge-up-3>.columns:nth-of-type(3n+1){clear:both}.xlarge-up-3>.column:last-child,.xlarge-up-3>.columns:last-child{float:left}.xlarge-up-4>.column,.xlarge-up-4>.columns{float:left;width:25%}.xlarge-up-4>.column:nth-of-type(1n),.xlarge-up-4>.columns:nth-of-type(1n){clear:none}.xlarge-up-4>.column:nth-of-type(4n+1),.xlarge-up-4>.columns:nth-of-type(4n+1){clear:both}.xlarge-up-4>.column:last-child,.xlarge-up-4>.columns:last-child{float:left}.xlarge-up-5>.column,.xlarge-up-5>.columns{float:left;width:20%}.xlarge-up-5>.column:nth-of-type(1n),.xlarge-up-5>.columns:nth-of-type(1n){clear:none}.xlarge-up-5>.column:nth-of-type(5n+1),.xlarge-up-5>.columns:nth-of-type(5n+1){clear:both}.xlarge-up-5>.column:last-child,.xlarge-up-5>.columns:last-child{float:left}.xlarge-up-6>.column,.xlarge-up-6>.columns{float:left;width:16.66667%}.xlarge-up-6>.column:nth-of-type(1n),.xlarge-up-6>.columns:nth-of-type(1n){clear:none}.xlarge-up-6>.column:nth-of-type(6n+1),.xlarge-up-6>.columns:nth-of-type(6n+1){clear:both}.xlarge-up-6>.column:last-child,.xlarge-up-6>.columns:last-child{float:left}.xlarge-up-7>.column,.xlarge-up-7>.columns{float:left;width:14.28571%}.xlarge-up-7>.column:nth-of-type(1n),.xlarge-up-7>.columns:nth-of-type(1n){clear:none}.xlarge-up-7>.column:nth-of-type(7n+1),.xlarge-up-7>.columns:nth-of-type(7n+1){clear:both}.xlarge-up-7>.column:last-child,.xlarge-up-7>.columns:last-child{float:left}.xlarge-up-8>.column,.xlarge-up-8>.columns{float:left;width:12.5%}.xlarge-up-8>.column:nth-of-type(1n),.xlarge-up-8>.columns:nth-of-type(1n){clear:none}.xlarge-up-8>.column:nth-of-type(8n+1),.xlarge-up-8>.columns:nth-of-type(8n+1){clear:both}.xlarge-up-8>.column:last-child,.xlarge-up-8>.columns:last-child{float:left}.xlarge-collapse>.column,.xlarge-collapse>.columns{padding-right:0;padding-left:0}.xlarge-collapse .row{margin-right:0;margin-left:0}.expanded.row .xlarge-collapse.row{margin-right:0;margin-left:0}.xlarge-uncollapse>.column,.xlarge-uncollapse>.columns{padding-right:1.875rem;padding-left:1.875rem}.xlarge-centered{margin-right:auto;margin-left:auto}.xlarge-centered,.xlarge-centered:last-child:not(:first-child){float:none;clear:both}.xlarge-uncentered,.xlarge-push-0,.xlarge-pull-0{position:static;margin-right:0;margin-left:0}.xlarge-uncentered,.xlarge-uncentered:last-child:not(:first-child),.xlarge-push-0,.xlarge-push-0:last-child:not(:first-child),.xlarge-pull-0,.xlarge-pull-0:last-child:not(:first-child){float:left;clear:none}.xlarge-uncentered:last-child:not(:first-child),.xlarge-push-0:last-child:not(:first-child),.xlarge-pull-0:last-child:not(:first-child){float:right}}.column-block{margin-bottom:1.25rem}.column-block>:last-child{margin-bottom:0}@media print, screen and (min-width: 40em){.column-block{margin-bottom:3.75rem}.column-block>:last-child{margin-bottom:0}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:80%;line-height:inherit}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:\\\"Raleway\\\",sans-serif;font-style:normal;font-weight:normal;color:inherit;text-rendering:optimizeLegibility}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small{line-height:0;color:#cacaca}h1,.h1{font-size:1.5rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h2,.h2{font-size:1.25rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h3,.h3{font-size:1.1875rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h4,.h4{font-size:1.125rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h5,.h5{font-size:1.0625rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h6,.h6{font-size:1rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}@media print, screen and (min-width: 40em){h1,.h1{font-size:3rem}h2,.h2{font-size:2.5rem}h3,.h3{font-size:1.9375rem}h4,.h4{font-size:1.5625rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}}a{line-height:inherit;color:#8f1838;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#cc2350}a img{border:0}hr{clear:both;max-width:100%;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}ul,ol,dl{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{margin-left:1.25rem;list-style-type:disc}ol{margin-left:1.25rem}ul ul,ol ul,ul ol,ol ol{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:bold}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:\\\"— \\\"}abbr,abbr[title]{border-bottom:1px dotted #0a0a0a;cursor:help;text-decoration:none}figure{margin:0}code{padding:.125rem .3125rem .0625rem;border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas,\\\"Liberation Mono\\\",Courier,monospace;font-weight:normal;color:#0a0a0a}kbd{margin:0;padding:.125rem .25rem 0;background-color:#e6e6e6;font-family:Consolas,\\\"Liberation Mono\\\",Courier,monospace;color:#0a0a0a}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:normal;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}ul.no-bullet,ol.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print, screen and (min-width: 40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print, screen and (min-width: 64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}@media screen and (min-width: 75em){.xlarge-text-left{text-align:left}.xlarge-text-right{text-align:right}.xlarge-text-center{text-align:center}.xlarge-text-justify{text-align:justify}}.show-for-print{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:black !important;text-shadow:none !important}.show-for-print{display:block !important}.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:\\\" (\\\" attr(href) \\\")\\\"}.ir a:after,a[href^='javascript:']:after,a[href^='#']:after{content:''}abbr[title]:after{content:\\\" (\\\" attr(title) \\\")\\\"}pre,blockquote{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.print-break-inside{page-break-inside:auto}}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem 0;padding:0.85em 1em;border:1px solid transparent;border-radius:0;transition:background-color 0.25s ease-out,color 0.25s ease-out;font-family:inherit;font-size:0.9rem;-webkit-appearance:none;line-height:1;text-align:center;cursor:pointer;background-color:#1779ba;color:#fefefe}[data-whatinput='mouse'] .button{outline:0}.button:hover,.button:focus{background-color:#14679e;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button.primary,.form-block .article .button,.article .button{background-color:#1779ba;color:#fefefe}.button.primary:hover,.article .button:hover,.button.primary:focus,.article .button:focus{background-color:#126195;color:#fefefe}.button.secondary{background-color:#767676;color:#fefefe}.button.secondary:hover,.button.secondary:focus{background-color:#5e5e5e;color:#fefefe}.button.success{background-color:#3adb76;color:#0a0a0a}.button.success:hover,.button.success:focus{background-color:#22bb5b;color:#0a0a0a}.button.warning{background-color:#ffae00;color:#0a0a0a}.button.warning:hover,.button.warning:focus{background-color:#cc8b00;color:#0a0a0a}.button.alert{background-color:#db2121;color:#fefefe}.button.alert:hover,.button.alert:focus{background-color:#af1a1a;color:#fefefe}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled,.button.disabled:hover,.button.disabled:focus,.button[disabled],.button[disabled]:hover,.button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button.disabled.primary,.article .button.disabled,.button[disabled].primary,.article .button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled.primary,.article .button.disabled,.button.disabled.primary:hover,.article .button.disabled:hover,.button.disabled.primary:focus,.article .button.disabled:focus,.button[disabled].primary,.article .button[disabled],.button[disabled].primary:hover,.article .button[disabled]:hover,.button[disabled].primary:focus,.article .button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button.disabled.secondary,.button[disabled].secondary{opacity:.25;cursor:not-allowed}.button.disabled.secondary,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#767676;color:#fefefe}.button.disabled.success,.button[disabled].success{opacity:.25;cursor:not-allowed}.button.disabled.success,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#3adb76;color:#0a0a0a}.button.disabled.warning,.button[disabled].warning{opacity:.25;cursor:not-allowed}.button.disabled.warning,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#ffae00;color:#0a0a0a}.button.disabled.alert,.button[disabled].alert{opacity:.25;cursor:not-allowed}.button.disabled.alert,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#db2121;color:#fefefe}.button.hollow{border:1px solid #1779ba;color:#1779ba}.button.hollow,.button.hollow:hover,.button.hollow:focus{background-color:transparent}.button.hollow.disabled,.button.hollow.disabled:hover,.button.hollow.disabled:focus,.button.hollow[disabled],.button.hollow[disabled]:hover,.button.hollow[disabled]:focus{background-color:transparent}.button.hollow:hover,.button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow:hover.disabled,.button.hollow:hover[disabled],.button.hollow:focus.disabled,.button.hollow:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary,.article .button.hollow{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:hover,.article .button.hollow:hover,.button.hollow.primary:focus,.article .button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary:hover.disabled,.article .button.hollow:hover.disabled,.button.hollow.primary:hover[disabled],.article .button.hollow:hover[disabled],.button.hollow.primary:focus.disabled,.article .button.hollow:focus.disabled,.button.hollow.primary:focus[disabled],.article .button.hollow:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.hollow.secondary{border:1px solid #767676;color:#767676}.button.hollow.secondary:hover,.button.hollow.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.secondary:hover.disabled,.button.hollow.secondary:hover[disabled],.button.hollow.secondary:focus.disabled,.button.hollow.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:hover,.button.hollow.success:focus{border-color:#157539;color:#157539}.button.hollow.success:hover.disabled,.button.hollow.success:hover[disabled],.button.hollow.success:focus.disabled,.button.hollow.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:hover,.button.hollow.warning:focus{border-color:#805700;color:#805700}.button.hollow.warning:hover.disabled,.button.hollow.warning:hover[disabled],.button.hollow.warning:focus.disabled,.button.hollow.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.hollow.alert{border:1px solid #db2121;color:#db2121}.button.hollow.alert:hover,.button.hollow.alert:focus{border-color:#6e1111;color:#6e1111}.button.hollow.alert:hover.disabled,.button.hollow.alert:hover[disabled],.button.hollow.alert:focus.disabled,.button.hollow.alert:focus[disabled]{border:1px solid #db2121;color:#db2121}.button.clear{border:1px solid #1779ba;color:#1779ba}.button.clear,.button.clear:hover,.button.clear:focus{background-color:transparent}.button.clear.disabled,.button.clear.disabled:hover,.button.clear.disabled:focus,.button.clear[disabled],.button.clear[disabled]:hover,.button.clear[disabled]:focus{background-color:transparent}.button.clear:hover,.button.clear:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus.disabled,.button.clear:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.clear,.button.clear.disabled,.button.clear[disabled],.button.clear:hover,.button.clear:hover.disabled,.button.clear:hover[disabled],.button.clear:focus,.button.clear:focus.disabled,.button.clear:focus[disabled]{border-color:transparent}.button.clear.primary,.article .button.clear{border:1px solid #1779ba;color:#1779ba}.button.clear.primary:hover,.article .button.clear:hover,.button.clear.primary:focus,.article .button.clear:focus{border-color:#0c3d5d;color:#0c3d5d}.button.clear.primary:hover.disabled,.article .button.clear:hover.disabled,.button.clear.primary:hover[disabled],.article .button.clear:hover[disabled],.button.clear.primary:focus.disabled,.article .button.clear:focus.disabled,.button.clear.primary:focus[disabled],.article .button.clear:focus[disabled]{border:1px solid #1779ba;color:#1779ba}.button.clear.primary,.article .button.clear,.button.clear.primary.disabled,.article .button.clear.disabled,.button.clear.primary[disabled],.article .button.clear[disabled],.button.clear.primary:hover,.article .button.clear:hover,.button.clear.primary:hover.disabled,.article .button.clear:hover.disabled,.button.clear.primary:hover[disabled],.article .button.clear:hover[disabled],.button.clear.primary:focus,.article .button.clear:focus,.button.clear.primary:focus.disabled,.article .button.clear:focus.disabled,.button.clear.primary:focus[disabled],.article .button.clear:focus[disabled]{border-color:transparent}.button.clear.secondary{border:1px solid #767676;color:#767676}.button.clear.secondary:hover,.button.clear.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border:1px solid #767676;color:#767676}.button.clear.secondary,.button.clear.secondary.disabled,.button.clear.secondary[disabled],.button.clear.secondary:hover,.button.clear.secondary:hover.disabled,.button.clear.secondary:hover[disabled],.button.clear.secondary:focus,.button.clear.secondary:focus.disabled,.button.clear.secondary:focus[disabled]{border-color:transparent}.button.clear.success{border:1px solid #3adb76;color:#3adb76}.button.clear.success:hover,.button.clear.success:focus{border-color:#157539;color:#157539}.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border:1px solid #3adb76;color:#3adb76}.button.clear.success,.button.clear.success.disabled,.button.clear.success[disabled],.button.clear.success:hover,.button.clear.success:hover.disabled,.button.clear.success:hover[disabled],.button.clear.success:focus,.button.clear.success:focus.disabled,.button.clear.success:focus[disabled]{border-color:transparent}.button.clear.warning{border:1px solid #ffae00;color:#ffae00}.button.clear.warning:hover,.button.clear.warning:focus{border-color:#805700;color:#805700}.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border:1px solid #ffae00;color:#ffae00}.button.clear.warning,.button.clear.warning.disabled,.button.clear.warning[disabled],.button.clear.warning:hover,.button.clear.warning:hover.disabled,.button.clear.warning:hover[disabled],.button.clear.warning:focus,.button.clear.warning:focus.disabled,.button.clear.warning:focus[disabled]{border-color:transparent}.button.clear.alert{border:1px solid #db2121;color:#db2121}.button.clear.alert:hover,.button.clear.alert:focus{border-color:#6e1111;color:#6e1111}.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border:1px solid #db2121;color:#db2121}.button.clear.alert,.button.clear.alert.disabled,.button.clear.alert[disabled],.button.clear.alert:hover,.button.clear.alert:hover.disabled,.button.clear.alert:hover[disabled],.button.clear.alert:focus,.button.clear.alert:focus.disabled,.button.clear.alert:focus[disabled]{border-color:transparent}.button.dropdown::after{display:block;width:0;height:0;border:inset .4em;content:'';border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:0.4em;display:inline-block;float:right;margin-left:1em}.button.dropdown.hollow::after,.button.dropdown.clear::after{border-top-color:#1779ba}.button.dropdown.hollow.primary::after,.article .button.dropdown.hollow::after,.button.dropdown.clear.primary::after,.article .button.dropdown.clear::after{border-top-color:#1779ba}.button.dropdown.hollow.secondary::after,.button.dropdown.clear.secondary::after{border-top-color:#767676}.button.dropdown.hollow.success::after,.button.dropdown.clear.success::after{border-top-color:#3adb76}.button.dropdown.hollow.warning::after,.button.dropdown.clear.warning::after{border-top-color:#ffae00}.button.dropdown.hollow.alert::after,.button.dropdown.clear.alert::after{border-top-color:#db2121}.button.arrow-only::after{top:-0.1em;float:none;margin-left:0}a.button:hover,a.button:focus{text-decoration:none}[type='text'],[type='password'],[type='date'],[type='datetime'],[type='datetime-local'],[type='month'],[type='week'],[type='email'],[type='number'],[type='search'],[type='tel'],[type='time'],[type='url'],[type='color'],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;margin:0 0 1rem;padding:.5rem;border:1px solid #d5d5d6;border-radius:0;background-color:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#2e2e2e;transition:box-shadow 0.5s,border-color 0.25s ease-in-out;appearance:none}[type='text']:focus,[type='password']:focus,[type='date']:focus,[type='datetime']:focus,[type='datetime-local']:focus,[type='month']:focus,[type='week']:focus,[type='email']:focus,[type='number']:focus,[type='search']:focus,[type='tel']:focus,[type='time']:focus,[type='url']:focus,[type='color']:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fcfcfc;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type='submit'],[type='button']{appearance:none;border-radius:0}input[type='search']{box-sizing:border-box}::placeholder{color:#cacaca}[type='file'],[type='checkbox'],[type='radio']{margin:0 0 1rem}[type='checkbox']+label,[type='radio']+label{display:inline-block;vertical-align:baseline;margin-left:.5rem;margin-right:1rem;margin-bottom:0}[type='checkbox']+label[for],[type='radio']+label[for]{cursor:pointer}label>[type='checkbox'],label>[type='radio']{margin-right:.5rem}[type='file']{width:100%}label{display:block;margin:0;font-size:.6875rem;font-weight:normal;line-height:1.8;color:#2e2e2e}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:flex;width:100%;margin-bottom:1rem;align-items:stretch}.input-group>:first-child,.input-group>:first-child.input-group-button>*{border-radius:0 0 0 0}.input-group>:last-child,.input-group>:last-child.input-group-button>*{border-radius:0 0 0 0}.input-group-label,.input-group-field,.input-group-button,.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{margin:0;white-space:nowrap}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;display:flex;flex:0 0 auto;align-items:center}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;flex:1 1 0px;min-width:0}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;display:flex;flex:0 0 auto}.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{align-self:stretch;height:auto;padding-top:0;padding-bottom:0;font-size:1rem}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-.1875rem;padding:0 .1875rem}select{height:2.4375rem;margin:0 0 1rem;padding:.5rem;appearance:none;border:1px solid #d5d5d6;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.5;color:#2e2e2e;background-image:url(\\\"data:image/svg+xml;utf8,\\\");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}@media screen and (min-width: 0\\\\0){select{background-image:url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==\\\")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fcfcfc;box-shadow:0 0 5px #cacaca;transition:box-shadow 0.5s,border-color 0.25s ease-in-out}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){border-color:#db2121;background-color:#fbe8e8}.is-invalid-input:not(:focus)::placeholder{color:#db2121}.is-invalid-label{color:#db2121}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:bold;color:#db2121}.form-error.is-visible{display:block}.callout{position:relative;margin:0 0 1rem 0;padding:0.5rem 1rem;border:1px solid rgba(10,10,10,0.25);border-radius:0;background-color:#fefefe;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary,.article .callout.button{background-color:#1779ba;color:#fefefe}.callout.secondary{background-color:#767676;color:#fefefe}.callout.success{background-color:#3adb76;color:#0a0a0a}.callout.warning{background-color:#ffae00;color:#0a0a0a}.callout.alert{background-color:#db2121;color:#fefefe}.callout.small{padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;padding-left:.5rem}.callout.large{padding-top:3rem;padding-right:3rem;padding-bottom:3rem;padding-left:3rem}.button-group{margin-bottom:1rem;display:flex;flex-wrap:nowrap;align-items:stretch}.button-group::before,.button-group::after{display:table;content:' ';flex-basis:0;order:1}.button-group::after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:0.9rem;flex:0 0 auto}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded .button{flex:1 1 0px}.button-group.primary .button,.article .button-group.button .button{background-color:#1779ba;color:#fefefe}.button-group.primary .button:hover,.article .button-group.button .button:hover,.button-group.primary .button:focus,.article .button-group.button .button:focus{background-color:#126195;color:#fefefe}.button-group.secondary .button{background-color:#767676;color:#fefefe}.button-group.secondary .button:hover,.button-group.secondary .button:focus{background-color:#5e5e5e;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:hover,.button-group.success .button:focus{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:hover,.button-group.warning .button:focus{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button{background-color:#db2121;color:#fefefe}.button-group.alert .button:hover,.button-group.alert .button:focus{background-color:#af1a1a;color:#fefefe}.button-group.stacked,.button-group.stacked-for-small,.button-group.stacked-for-medium{flex-wrap:wrap}.button-group.stacked .button,.button-group.stacked-for-small .button,.button-group.stacked-for-medium .button{flex:0 0 100%}.button-group.stacked .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked-for-medium .button:last-child{margin-bottom:0}.button-group.stacked.expanded .button,.button-group.stacked-for-small.expanded .button,.button-group.stacked-for-medium.expanded .button{flex:1 1 0px}@media print, screen and (min-width: 40em){.button-group.stacked-for-small .button{flex:0 0 auto;margin-bottom:0}}@media print, screen and (min-width: 64em){.button-group.stacked-for-medium .button{flex:0 0 auto;margin-bottom:0}}@media screen and (max-width: 39.99875em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}@media screen and (max-width: 63.99875em){.button-group.stacked-for-medium.expanded{display:block}.button-group.stacked-for-medium.expanded .button{display:block;margin-right:0}}.close-button{position:absolute;color:#8a8a8a;cursor:pointer}[data-whatinput='mouse'] .close-button{outline:0}.close-button:hover,.close-button:focus{color:#0a0a0a}.close-button.small{right:0.66rem;top:0.33em;font-size:1.5em;line-height:1}.close-button,.close-button.medium{right:1rem;top:0.5rem;font-size:2em;line-height:1}.accordion{margin-left:0;background:#fefefe;list-style-type:none}.accordion[disabled] .accordion-title{cursor:not-allowed}.accordion-item:first-child>:first-child{border-radius:0 0 0 0}.accordion-item:last-child>:last-child{border-radius:0 0 0 0}.accordion-title{position:relative;display:block;padding:1.25rem 1rem;border:1px solid #e6e6e6;border-bottom:0;font-size:.75rem;line-height:1;color:#8f1838}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0 0 0 0}.accordion-title:hover,.accordion-title:focus{background-color:#e6e6e6}.accordion-title::before{position:absolute;top:50%;right:1rem;margin-top:-0.5rem;content:'+'}.is-active>.accordion-title::before{content:'\\\\2013'}.accordion-content{display:none;padding:1rem;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.menu{padding:0;margin:0;list-style:none;position:relative;display:flex;flex-wrap:wrap}[data-whatinput='mouse'] .menu li{outline:0}.menu a,.menu .button{line-height:1;text-decoration:none;display:block;padding:0.7rem 1rem}.menu input,.menu select,.menu a,.menu button{margin-bottom:0}.menu input{display:inline-block}.menu,.menu.horizontal{flex-wrap:wrap;flex-direction:row}.menu.vertical{flex-wrap:nowrap;flex-direction:column}.menu.expanded li{flex:1 1 0px}.menu.simple{align-items:center}.menu.simple li+li{margin-left:1rem}.menu.simple a{padding:0}@media print, screen and (min-width: 40em){.menu.medium-horizontal{flex-wrap:wrap;flex-direction:row}.menu.medium-vertical{flex-wrap:nowrap;flex-direction:column}.menu.medium-expanded li{flex:1 1 0px}.menu.medium-simple li{flex:1 1 0px}}@media print, screen and (min-width: 64em){.menu.large-horizontal{flex-wrap:wrap;flex-direction:row}.menu.large-vertical{flex-wrap:nowrap;flex-direction:column}.menu.large-expanded li{flex:1 1 0px}.menu.large-simple li{flex:1 1 0px}}@media screen and (min-width: 75em){.menu.xlarge-horizontal{flex-wrap:wrap;flex-direction:row}.menu.xlarge-vertical{flex-wrap:nowrap;flex-direction:column}.menu.xlarge-expanded li{flex:1 1 0px}.menu.xlarge-simple li{flex:1 1 0px}}.menu.nested{margin-right:0;margin-left:1rem}.menu.icons a{display:flex}.menu.icon-top a,.menu.icon-right a,.menu.icon-bottom a,.menu.icon-left a{display:flex}.menu.icon-left li a{flex-flow:row nowrap}.menu.icon-left li a img,.menu.icon-left li a i,.menu.icon-left li a svg{margin-right:.25rem}.menu.icon-right li a{flex-flow:row nowrap}.menu.icon-right li a img,.menu.icon-right li a i,.menu.icon-right li a svg{margin-left:.25rem}.menu.icon-top li a{flex-flow:column nowrap}.menu.icon-top li a img,.menu.icon-top li a i,.menu.icon-top li a svg{align-self:stretch;margin-bottom:.25rem;text-align:center}.menu.icon-bottom li a{flex-flow:column nowrap}.menu.icon-bottom li a img,.menu.icon-bottom li a i,.menu.icon-bottom li a svg{align-self:stretch;margin-bottom:.25rem;text-align:center}.menu .is-active>a{background:#414244;color:#fefefe}.menu .active>a{background:#414244;color:#fefefe}.menu.align-left{justify-content:flex-start}.menu.align-right li{display:flex;justify-content:flex-end}.menu.align-right li .submenu li{justify-content:flex-start}.menu.align-right.vertical li{display:block;text-align:right}.menu.align-right.vertical li .submenu li{text-align:right}.menu.align-right .nested{margin-right:1rem;margin-left:0}.menu.align-center li{display:flex;justify-content:center}.menu.align-center li .submenu li{justify-content:flex-start}.menu .menu-text{padding:0.7rem 1rem;font-weight:bold;line-height:1;color:inherit}.menu-centered>.menu{justify-content:center}.menu-centered>.menu li{display:flex;justify-content:center}.menu-centered>.menu li .submenu li{justify-content:flex-start}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:''}.menu-icon:hover::after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark::after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:''}.menu-icon.dark:hover::after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block}.is-drilldown.animate-height{transition:height 0.5s}.drilldown a{padding:0.7rem 1rem;background:#fefefe}.drilldown .is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;width:100%;background:#fefefe;transition:transform 0.15s linear}.drilldown .is-drilldown-submenu.is-active{z-index:1;display:block;transform:translateX(-100%)}.drilldown .is-drilldown-submenu.is-closing{transform:translateX(100%)}.drilldown .is-drilldown-submenu a{padding:0.7rem 1rem}.drilldown .nested.is-drilldown-submenu{margin-right:0;margin-left:0}.drilldown .drilldown-submenu-cover-previous{min-height:100%}.drilldown .is-drilldown-submenu-parent>a{position:relative}.drilldown .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba;position:absolute;top:50%;margin-top:-6px;right:1rem}.drilldown.align-left .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad;right:1rem;left:auto}.drilldown.align-right .is-drilldown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:1rem}.drilldown .js-drilldown-back>a::before{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;display:inline-block;vertical-align:middle;margin-right:0.75rem}.dropdown-pane{position:absolute;z-index:10;display:none;width:300px;padding:1rem;visibility:hidden;border:0;border-radius:0;background-color:#55565a;font-size:1rem}.dropdown-pane.is-opening{display:block}.dropdown-pane.is-open{display:block;visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#ababad transparent transparent;right:5px;left:auto;margin-top:-3px}[data-whatinput='mouse'] .dropdown.menu a{outline:0}.dropdown.menu>li>a{background:#55565a;padding:0.7rem 1rem}.dropdown.menu>li.is-active>a{background:rgba(0,0,0,0);color:#1779ba}.no-js .dropdown.menu ul{display:none}.dropdown.menu .nested.is-dropdown-submenu{margin-right:0;margin-left:0}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a::after{right:14px}.dropdown.menu.vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:5px}.dropdown.menu.vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad}@media print, screen and (min-width: 40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#ababad transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a::after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:5px}.dropdown.menu.medium-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad}}@media print, screen and (min-width: 64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#ababad transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a::after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:5px}.dropdown.menu.large-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad}}@media screen and (min-width: 75em){.dropdown.menu.xlarge-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.xlarge-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.xlarge-horizontal>li.is-dropdown-submenu-parent>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#ababad transparent transparent;right:5px;left:auto;margin-top:-3px}.dropdown.menu.xlarge-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.xlarge-vertical>li.opens-left>.is-dropdown-submenu{top:0;right:100%;left:auto}.dropdown.menu.xlarge-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.xlarge-vertical>li>a::after{right:14px}.dropdown.menu.xlarge-vertical>li.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:5px}.dropdown.menu.xlarge-vertical>li.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;right:0;left:auto}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a::after{position:absolute;top:50%;right:5px;left:auto;margin-top:-6px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{right:100%;left:auto}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{position:absolute;top:0;left:100%;z-index:1;display:none;min-width:200px;border:0;background:#55565a}.dropdown .is-dropdown-submenu a{padding:0.7rem 1rem}.is-dropdown-submenu .is-dropdown-submenu-parent>a::after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #ababad transparent transparent;right:auto;left:5px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a::after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #ababad}.is-dropdown-submenu .is-dropdown-submenu{margin-top:0}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;transition:opacity .5s ease,visibility .5s ease;background:rgba(254,254,254,0.25);opacity:0;visibility:hidden;overflow:hidden}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{position:relative;overflow:hidden}.off-canvas{position:fixed;z-index:12;transition:transform .5s ease;backface-visibility:hidden;background:#55565a}[data-whatinput='mouse'] .off-canvas{outline:0}.off-canvas.is-transition-push{z-index:12}.off-canvas.is-closed{visibility:hidden}.off-canvas.is-transition-overlap{z-index:13}.off-canvas.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas.is-open{transform:translate(0, 0)}.off-canvas-absolute{position:absolute;z-index:12;transition:transform .5s ease;backface-visibility:hidden;background:#55565a}[data-whatinput='mouse'] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-push{z-index:12}.off-canvas-absolute.is-closed{visibility:hidden}.off-canvas-absolute.is-transition-overlap{z-index:13}.off-canvas-absolute.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,0.7)}.off-canvas-absolute.is-open{transform:translate(0, 0)}.position-left{top:0;left:0;height:100%;overflow-y:auto;width:250px;transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left{transform:translateX(-250px)}.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-left.has-transition-push{transform:translateX(250px)}.position-left.is-transition-push{box-shadow:inset -13px 0 20px -13px rgba(10,10,10,0.25)}.position-right{top:0;right:0;height:100%;overflow-y:auto;width:250px;transform:translateX(250px)}.off-canvas-content .off-canvas.position-right{transform:translateX(250px)}.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-right.has-transition-push{transform:translateX(-250px)}.position-right.is-transition-push{box-shadow:inset 13px 0 20px -13px rgba(10,10,10,0.25)}.position-top{top:0;left:0;width:100%;overflow-x:auto;height:250px;transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top{transform:translateY(-250px)}.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-top.has-transition-push{transform:translateY(250px)}.position-top.is-transition-push{box-shadow:inset 0 -13px 20px -13px rgba(10,10,10,0.25)}.position-bottom{bottom:0;left:0;width:100%;overflow-x:auto;height:250px;transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom{transform:translateY(250px)}.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open{transform:translate(0, 0)}.off-canvas-content.is-open-bottom.has-transition-push{transform:translateY(-250px)}.position-bottom.is-transition-push{box-shadow:inset 0 13px 20px -13px rgba(10,10,10,0.25)}.off-canvas-content{transform:none;transition:transform .5s ease;backface-visibility:hidden}.off-canvas-content.has-transition-push{transform:translate(0, 0)}.off-canvas-content .off-canvas.is-open{transform:translate(0, 0)}@media print, screen and (min-width: 40em){.position-left.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-medium .close-button{display:none}.off-canvas-content .position-left.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-medium ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-medium .close-button{display:none}.off-canvas-content .position-right.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-medium ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-medium .close-button{display:none}.off-canvas-content .position-top.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-medium ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-medium .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-medium{transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-medium ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 64em){.position-left.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-large .close-button{display:none}.off-canvas-content .position-left.reveal-for-large{transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-large ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-large .close-button{display:none}.off-canvas-content .position-right.reveal-for-large{transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-large ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-large .close-button{display:none}.off-canvas-content .position-top.reveal-for-large{transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-large ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-large .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-large{transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-large ~ .off-canvas-content{margin-bottom:250px}}@media screen and (min-width: 75em){.position-left.reveal-for-xlarge{transform:none;z-index:12;transition:none;visibility:visible}.position-left.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-left.reveal-for-xlarge{transform:none}.off-canvas-content.has-reveal-left{margin-left:250px}.position-left.reveal-for-xlarge ~ .off-canvas-content{margin-left:250px}.position-right.reveal-for-xlarge{transform:none;z-index:12;transition:none;visibility:visible}.position-right.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-right.reveal-for-xlarge{transform:none}.off-canvas-content.has-reveal-right{margin-right:250px}.position-right.reveal-for-xlarge ~ .off-canvas-content{margin-right:250px}.position-top.reveal-for-xlarge{transform:none;z-index:12;transition:none;visibility:visible}.position-top.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-top.reveal-for-xlarge{transform:none}.off-canvas-content.has-reveal-top{margin-top:250px}.position-top.reveal-for-xlarge ~ .off-canvas-content{margin-top:250px}.position-bottom.reveal-for-xlarge{transform:none;z-index:12;transition:none;visibility:visible}.position-bottom.reveal-for-xlarge .close-button{display:none}.off-canvas-content .position-bottom.reveal-for-xlarge{transform:none}.off-canvas-content.has-reveal-bottom{margin-bottom:250px}.position-bottom.reveal-for-xlarge ~ .off-canvas-content{margin-bottom:250px}}@media print, screen and (min-width: 40em){.off-canvas.in-canvas-for-medium{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;transition:none}.off-canvas.in-canvas-for-medium.position-left,.off-canvas.in-canvas-for-medium.position-right,.off-canvas.in-canvas-for-medium.position-top,.off-canvas.in-canvas-for-medium.position-bottom{box-shadow:none;transform:none}.off-canvas.in-canvas-for-medium .close-button{display:none}}@media print, screen and (min-width: 64em){.off-canvas.in-canvas-for-large{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;transition:none}.off-canvas.in-canvas-for-large.position-left,.off-canvas.in-canvas-for-large.position-right,.off-canvas.in-canvas-for-large.position-top,.off-canvas.in-canvas-for-large.position-bottom{box-shadow:none;transform:none}.off-canvas.in-canvas-for-large .close-button{display:none}}@media screen and (min-width: 75em){.off-canvas.in-canvas-for-xlarge{visibility:visible;height:auto;position:static;background:none;width:auto;overflow:visible;transition:none}.off-canvas.in-canvas-for-xlarge.position-left,.off-canvas.in-canvas-for-xlarge.position-right,.off-canvas.in-canvas-for-xlarge.position-top,.off-canvas.in-canvas-for-xlarge.position-bottom{box-shadow:none;transform:none}.off-canvas.in-canvas-for-xlarge .close-button{display:none}}.pagination{margin-left:0;margin-bottom:1rem}.pagination::before,.pagination::after{display:table;content:' ';flex-basis:0;order:1}.pagination::after{clear:both}.pagination li{margin-right:.0625rem;border-radius:0;font-size:.875rem;display:none}.pagination li:last-child,.pagination li:first-child{display:inline-block}@media print, screen and (min-width: 40em){.pagination li{display:inline-block}}.pagination a,.pagination button{display:block;padding:.1875rem .625rem;border-radius:0;color:#0a0a0a}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#1779ba;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:transparent}.pagination .ellipsis::after{padding:.1875rem .625rem;content:'\\\\2026';color:#0a0a0a}.pagination-previous a::before,.pagination-previous.disabled::before{display:inline-block;margin-right:0.5rem;content:'\\\\00ab'}.pagination-next a::after,.pagination-next.disabled::after{display:inline-block;margin-left:0.5rem;content:'\\\\00bb'}.progress{height:1rem;margin-bottom:1rem;border-radius:0;background-color:#cacaca}.progress.primary .progress-meter,.article .progress.button .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#db2121}.progress-meter{position:relative;display:block;width:0%;height:100%;background-color:#1779ba}.progress-meter-text{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);margin:0;font-size:0.75rem;font-weight:bold;color:#fefefe;white-space:nowrap}.slider{position:relative;height:.35rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#676767;cursor:pointer;user-select:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.35rem;background-color:#e6e6e6;transition:all 0.2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{position:absolute;top:50%;transform:translateY(-50%);left:0;z-index:1;display:inline-block;width:1rem;height:1rem;border-radius:0;background-color:#cc2350;transition:all 0.2s ease-in-out;touch-action:manipulation}[data-whatinput='mouse'] .slider-handle{outline:0}.slider-handle:hover{background-color:#ad1e44}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;transform:scale(1, -1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1rem;height:1rem;transform:translateX(-50%)}.switch{height:2rem;position:relative;margin-bottom:1rem;outline:0;font-size:.875rem;font-weight:bold;color:#fefefe;user-select:none}.switch-input{position:absolute;margin-bottom:0;opacity:0}.switch-paddle{position:relative;display:block;width:4rem;height:2rem;border-radius:0;background:#cacaca;transition:all 0.25s ease-out;font-weight:inherit;color:inherit;cursor:pointer}input+.switch-paddle{margin:0}.switch-paddle::after{position:absolute;top:.25rem;left:.25rem;display:block;width:1.5rem;height:1.5rem;transform:translate3d(0, 0, 0);border-radius:0;background:#fefefe;transition:all 0.25s ease-out;content:''}input:checked ~ .switch-paddle{background:#1779ba}input:checked ~ .switch-paddle::after{left:2.25rem}[data-whatinput='mouse'] input:focus ~ .switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle::after{top:.25rem;left:.25rem;width:1rem;height:1rem}.switch.tiny input:checked ~ .switch-paddle::after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle::after{top:.25rem;left:.25rem;width:1.25rem;height:1.25rem}.switch.small input:checked ~ .switch-paddle::after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle::after{top:.25rem;left:.25rem;width:2rem;height:2rem}.switch.large input:checked ~ .switch-paddle::after{left:2.75rem}table{border-collapse:collapse;width:100%;margin-bottom:1rem;border-radius:0}thead,tbody,tfoot{border:0;background-color:#fefefe}caption{padding:1rem;font-weight:bold}thead{background:#fff;color:#8f1838}tfoot{background:#f1f1f1;color:#0a0a0a}thead tr,tfoot tr{background:transparent}thead th,thead td,tfoot th,tfoot td{padding:1rem;font-weight:bold;text-align:left}tbody th,tbody td{padding:1rem}tbody tr{border-bottom:0;border-bottom:0;background-color:#fefefe}table.striped tbody tr:nth-child(even){border-bottom:0;background-color:#f1f1f1}@media screen and (max-width: 63.99875em){table.stack thead{display:none}table.stack tfoot{display:none}table.stack tr,table.stack th,table.stack td{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover thead tr:hover{background-color:#fafafa}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f8f7}table.hover.striped tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.tabs{margin:0;border:1px solid #e6e6e6;background:#e6e6e6;list-style-type:none}.tabs::before,.tabs::after{display:table;content:' ';flex-basis:0;order:1}.tabs::after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:transparent}.tabs.primary,.article .tabs.button{background:#1779ba}.tabs.primary>li>a,.article .tabs.button>li>a{color:#fefefe}.tabs.primary>li>a:hover,.article .tabs.button>li>a:hover,.tabs.primary>li>a:focus,.article .tabs.button>li>a:focus{background:#1673b1}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;font-size:.75rem;line-height:1;color:#2e2e2e}[data-whatinput='mouse'] .tabs-title>a{outline:0}.tabs-title>a:hover{background:#fff;color:#282828}.tabs-title>a:focus,.tabs-title>a[aria-selected='true']{background:#fefefe;color:#8f1838}.tabs-content{border:1px solid #e6e6e6;border-top:0;background:#fefefe;color:#0a0a0a;transition:all 0.5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel.is-active{display:block}.title-bar{padding:.5rem;background:#0a0a0a;color:#fefefe;display:flex;justify-content:flex-start;align-items:center}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left,.title-bar-right{flex:1 1 0px}.title-bar-right{text-align:right}.title-bar-title{display:inline-block;vertical-align:middle;font-weight:bold}.has-tip{position:relative;display:inline-block;border-bottom:none;font-weight:bold;cursor:help}.tooltip{position:absolute;top:calc(100% + .6495rem);z-index:1200;max-width:10rem;padding:0.5rem 0.75rem;border-radius:0;background-color:#2e2e2e;font-size:.75rem;color:#fefefe}.tooltip::before{position:absolute}.tooltip.bottom::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-top-width:0;border-bottom-style:solid;border-color:transparent transparent #2e2e2e;bottom:100%}.tooltip.bottom.align-center::before{left:50%;transform:translateX(-50%)}.tooltip.top::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-bottom-width:0;border-top-style:solid;border-color:#2e2e2e transparent transparent;top:100%;bottom:auto}.tooltip.top.align-center::before{left:50%;transform:translateX(-50%)}.tooltip.left::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #2e2e2e;left:100%}.tooltip.left.align-center::before{bottom:auto;top:50%;transform:translateY(-50%)}.tooltip.right::before{display:block;width:0;height:0;border:inset .75rem;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #2e2e2e transparent transparent;right:100%;left:auto}.tooltip.right.align-center::before{bottom:auto;top:50%;transform:translateY(-50%)}.tooltip.align-top::before{bottom:auto;top:10%}.tooltip.align-bottom::before{bottom:10%;top:auto}.tooltip.align-left::before{left:10%;right:auto}.tooltip.align-right::before{left:auto;right:10%}.top-bar{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:.5rem;flex-wrap:wrap}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{flex:0 0 100%;max-width:100%}@media print, screen and (min-width: 40em){.top-bar{flex-wrap:nowrap}.top-bar .top-bar-left{flex:1 1 auto;margin-right:auto}.top-bar .top-bar-right{flex:0 1 auto;margin-left:auto}}@media screen and (max-width: 63.99875em){.top-bar.stacked-for-medium{flex-wrap:wrap}.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{flex:0 0 100%;max-width:100%}}@media screen and (max-width: 74.99875em){.top-bar.stacked-for-large{flex-wrap:wrap}.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{flex:0 0 100%;max-width:100%}}@media screen and (max-width: 89.99875em){.top-bar.stacked-for-xlarge{flex-wrap:wrap}.top-bar.stacked-for-xlarge .top-bar-left,.top-bar.stacked-for-xlarge .top-bar-right{flex:0 0 100%;max-width:100%}}.top-bar-title{flex:0 0 auto;margin:0.5rem 1rem 0.5rem 0}.top-bar-left,.top-bar-right{flex:0 0 auto}.hide{display:none !important}.invisible{visibility:hidden}@media screen and (max-width: 39.99875em){.hide-for-small-only{display:none !important}}@media screen and (max-width: 0em), screen and (min-width: 40em){.show-for-small-only{display:none !important}}@media print, screen and (min-width: 40em){.hide-for-medium{display:none !important}}@media screen and (max-width: 39.99875em){.show-for-medium{display:none !important}}@media screen and (min-width: 40em) and (max-width: 63.99875em){.hide-for-medium-only{display:none !important}}@media screen and (max-width: 39.99875em), screen and (min-width: 64em){.show-for-medium-only{display:none !important}}@media print, screen and (min-width: 64em){.hide-for-large{display:none !important}}@media screen and (max-width: 63.99875em){.show-for-large{display:none !important}}@media screen and (min-width: 64em) and (max-width: 74.99875em){.hide-for-large-only{display:none !important}}@media screen and (max-width: 63.99875em), screen and (min-width: 75em){.show-for-large-only{display:none !important}}@media screen and (min-width: 75em){.hide-for-xlarge{display:none !important}}@media screen and (max-width: 74.99875em){.show-for-xlarge{display:none !important}}@media screen and (min-width: 75em) and (max-width: 89.99875em){.hide-for-xlarge-only{display:none !important}}@media screen and (max-width: 74.99875em), screen and (min-width: 90em){.show-for-xlarge-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation: portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}.float-left{float:left !important}.float-right{float:right !important}.float-center{display:block;margin-right:auto;margin-left:auto}.clearfix::before,.clearfix::after{display:table;content:' ';flex-basis:0;order:1}.clearfix::after{clear:both}.responsive-embed,.flex-video{position:relative;height:0;margin-bottom:1rem;padding-bottom:75%;overflow:hidden}.responsive-embed iframe,.responsive-embed object,.responsive-embed embed,.responsive-embed video,.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.responsive-embed.widescreen,.flex-video.widescreen{padding-bottom:56.25%}.slide-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(-100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateY(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:translateX(100%);transition-property:transform, opacity;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateY(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:translateX(0);transition-property:transform, opacity;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:top;transition-property:transform, opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:right;transition-property:transform, opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);transform-origin:bottom;transition-property:transform, opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);transform-origin:left;transition-property:transform, opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:center;transition-property:transform, opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:top;transition-property:transform, opacity;opacity:1}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:right;transition-property:transform, opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:bottom;transition-property:transform, opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:left;transition-property:transform, opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform, opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(.5);transition-property:transform, opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:scale(1.5);transition-property:transform, opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-up.mui-leave.mui-leave-active{transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:scale(1);transition-property:transform, opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(-.75turn);transition-property:transform, opacity;opacity:0}.spin-in.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out.mui-leave.mui-leave-active{transform:rotate(.75turn);opacity:0}.spin-in-ccw.mui-enter{transition-duration:500ms;transition-timing-function:linear;transform:rotate(.75turn);transition-property:transform, opacity;opacity:0}.spin-in-ccw.mui-enter.mui-enter-active{transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:500ms;transition-timing-function:linear;transform:rotate(0);transition-property:transform, opacity;opacity:1}.spin-out-ccw.mui-leave.mui-leave-active{transform:rotate(-.75turn);opacity:0}.slow{transition-duration:750ms !important}.fast{transition-duration:250ms !important}.linear{transition-timing-function:linear !important}.ease{transition-timing-function:ease !important}.ease-in{transition-timing-function:ease-in !important}.ease-out{transition-timing-function:ease-out !important}.ease-in-out{transition-timing-function:ease-in-out !important}.bounce-in{transition-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{transition-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{transition-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{transition-delay:300ms !important}.long-delay{transition-delay:700ms !important}.shake{animation-name:shake-7}@keyframes shake-7{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-cw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(-1turn)}100%{transform:rotate(0)}}.spin-ccw{animation-name:spin-ccw-1turn}@keyframes spin-ccw-1turn{0%{transform:rotate(0)}100%{transform:rotate(-1turn)}}.wiggle{animation-name:wiggle-7deg}@keyframes wiggle-7deg{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,100%{transform:rotate(0)}}.shake,.spin-cw,.spin-ccw,.wiggle{animation-duration:500ms}.infinite{animation-iteration-count:infinite}.slow{animation-duration:750ms !important}.fast{animation-duration:250ms !important}.linear{animation-timing-function:linear !important}.ease{animation-timing-function:ease !important}.ease-in{animation-timing-function:ease-in !important}.ease-out{animation-timing-function:ease-out !important}.ease-in-out{animation-timing-function:ease-in-out !important}.bounce-in{animation-timing-function:cubic-bezier(0.485, 0.155, 0.24, 1.245) !important}.bounce-out{animation-timing-function:cubic-bezier(0.485, 0.155, 0.515, 0.845) !important}.bounce-in-out{animation-timing-function:cubic-bezier(0.76, -0.245, 0.24, 1.245) !important}.short-delay{animation-delay:300ms !important}.long-delay{animation-delay:700ms !important}body{background:#fff}datagrid .ag-row.row-actions.actions-persistent,datagrid tbody tr td.row-actions.actions-persistent,table.table .ag-row.row-actions.actions-persistent,table.table tbody tr td.row-actions.actions-persistent{border-left:1px solid #efefef !important}datagrid .ag-row.row-actions.actions-persistent button,datagrid tbody tr td.row-actions.actions-persistent button,table.table .ag-row.row-actions.actions-persistent button,table.table tbody tr td.row-actions.actions-persistent button{opacity:1 !important}@media print, screen and (min-width: 40em){.no-navigation .page-content{padding-left:0}.no-navigation header,.no-navigation .top-bar{left:0}}.no-navigation .page-content{padding-bottom:1.25rem;margin-bottom:0}ul.no-margin{margin-bottom:0 !important}.nowrap{white-space:nowrap}.page-content{background:#fefefe;padding-bottom:1px}.hover-pointer:hover{cursor:pointer}html,body{height:100%;min-height:320px}.off-canvas-content{min-height:500px}.contain{max-width:1600px;margin:0 auto}.row.tight{padding-left:25px;padding-right:25px}@media screen and (max-width: 39.99875em){.row.tight{padding-left:5px;padding-right:5px}}.row.tight>.columns{padding:5px}.page-content{position:relative;padding-bottom:3rem;padding-top:6.25rem;padding-left:3.125rem}@media screen and (max-width: 39.99875em){.page-content{padding-top:0;margin-bottom:55px}}@media screen and (max-width: 39.99875em){.page-content{padding-left:0}}.point-detail{padding-left:1.75rem;padding-right:1.75rem}@media screen and (max-width: 39.99875em){.point-detail{padding-left:0;padding-right:0}}.legal-text{font-size:.8125rem}.legal-text a{font-size:.8125rem;margin:0;text-decoration:underline}button,.button{transition:ease all .25s}.button.clear,button.clear{border:2px solid #fff;background:none transparent;text-transform:uppercase;transition:ease all .25s;color:#fff}.button.clear:hover,.button.clear:active,.button.clear:focus,button.clear:hover,button.clear:active,button.clear:focus{background:#fff;color:#2e2e2e}.button.clear.maroon,button.clear.maroon{color:#8f1838;border:2px solid #8f1838;padding:.85em 1em;display:inline-block;font-size:.75rem}.button.primary,.form-block .article .button,.article .button,button.primary,.form-block .article button.button,.article button.button{background:#8f1838;text-transform:uppercase;font-size:.75rem;color:#fff;margin:0 0 1rem;padding:.85em 1em;border:2px solid #8f1838}.button.primary:hover,.article .button:hover,.button.primary:active,.article .button:active,.button.primary:focus,.article .button:focus,button.primary:hover,.article button.button:hover,button.primary:active,.article button.button:active,button.primary:focus,.article button.button:focus{background:#ae1e44;border:2px solid #ae1e44}.button.primary.large,.article .button.large,button.primary.large,.article button.large.button{font-size:.875rem}.button.primary.clear,.article .button.clear,button.primary.clear,.article button.clear.button{color:#8f1838;border:2px solid #8f1838;background:none transparent}.button.primary.clear:hover,.article .button.clear:hover,.button.primary.clear:active,.article .button.clear:active,.button.primary.clear:focus,.article .button.clear:focus,button.primary.clear:hover,.article button.clear.button:hover,button.primary.clear:active,.article button.clear.button:active,button.primary.clear:focus,.article button.clear.button:focus{background:#ae1e44;border:2px solid #ae1e44;color:#fff}.button.secondary,button.secondary{background:#919194;text-transform:uppercase;font-size:.75rem;color:#fff;margin:0 0 1rem;padding:.85em 1em;border:2px solid #919194}.button.secondary.large,button.secondary.large{font-size:.875rem}.button.secondary.clear,button.secondary.clear{color:#919194;border:2px solid #919194;background:none transparent}.button.secondary.clear:hover,.button.secondary.clear:active,.button.secondary.clear:focus,button.secondary.clear:hover,button.secondary.clear:active,button.secondary.clear:focus{background:#919194;color:#fff}button:disabled,button.disabled,button[disabled],.button:disabled,.button.disabled,.button[disabled],article .button:disabled,article .button.disabled,article .button[disabled],article button:disabled,article button.disabled,article button[disabled]{cursor:not-allowed;opacity:.35}button:disabled.primary,.article button.button:disabled,button.disabled.primary,.article button.disabled.button,button[disabled].primary,.article button.button[disabled],.button:disabled.primary,.article .button:disabled,.button.disabled.primary,.article .button.disabled,.button[disabled].primary,.article .button[disabled],article .button:disabled.primary,article .article .button:disabled,.article article .button:disabled,article .button.disabled.primary,article .article .button.disabled,.article article .button.disabled,article .button[disabled].primary,article .article .button[disabled],.article article .button[disabled],article button:disabled.primary,article .article button.button:disabled,.article article button.button:disabled,article button.disabled.primary,article .article button.disabled.button,.article article button.disabled.button,article button[disabled].primary,article .article button.button[disabled],.article article button.button[disabled]{background:#8f1838 !important;border:2px solid #8f1838 !important}button:disabled.primary.clear,.article button.button:disabled.clear,button.disabled.primary.clear,.article button.disabled.clear.button,button[disabled].primary.clear,.article button.button[disabled].clear,.button:disabled.primary.clear,.article .button:disabled.clear,.button.disabled.primary.clear,.article .button.disabled.clear,.button[disabled].primary.clear,.article .button[disabled].clear,article .button:disabled.primary.clear,article .article .button:disabled.clear,.article article .button:disabled.clear,article .button.disabled.primary.clear,article .article .button.disabled.clear,.article article .button.disabled.clear,article .button[disabled].primary.clear,article .article .button[disabled].clear,.article article .button[disabled].clear,article button:disabled.primary.clear,article .article button.button:disabled.clear,.article article button.button:disabled.clear,article button.disabled.primary.clear,article .article button.disabled.clear.button,.article article button.disabled.clear.button,article button[disabled].primary.clear,article .article button.button[disabled].clear,.article article button.button[disabled].clear{background:#fff !important;color:#8f1838 !important}.off-canvas .filter-buttons .columns{padding:5px}.off-canvas .apply-filters,.off-canvas .clear-filters{display:block;width:100%;margin-bottom:0;padding-left:1rem;padding-right:1rem;text-align:center;padding-top:.5rem !important;padding-bottom:0.5rem !important}.off-canvas .apply-filters .fa,.off-canvas .clear-filters .fa{margin-right:2px}.off-canvas .clear-filters{border:2px solid #919194;background:none transparent}.off-canvas .clear-filters:hover,.off-canvas .clear-filters:focus,.off-canvas .clear-filters:active{background:#919194}.sidebar a.site-detail-edit{padding:0 20px 0 29px;text-align:left;color:#2e2e2e;text-transform:none;font-size:.6875rem;border:none;position:relative;height:2.4375rem;line-height:normal !important;margin:.5rem 0 0 0;position:relative;top:-8px;margin-top:.75rem;display:block}.sidebar a.site-detail-edit .fa{color:#8f1838;font-size:1.25rem;position:absolute;top:4px;left:0;margin-right:3px;width:1.5rem;text-align:center;float:left;display:inline-block}.sidebar a.site-detail-edit:hover .fa,.sidebar a.site-detail-edit:active .fa,.sidebar a.site-detail-edit:focus .fa{color:#cc2350}button.icon-form-spacing,.button.icon-form-spacing{background:none transparent;margin:1.625rem 0 0 0;padding:0 10px 0 40px;transition:ease all .25s;text-align:left;color:#2e2e2e;text-transform:none;font-size:.6875rem;border:none;position:relative;line-height:normal !important}button.icon-form-spacing i.fa,.button.icon-form-spacing i.fa{transition:ease all .25s;color:#8f1838 !important;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;width:1.5rem;height:auto !important;line-height:normal;text-align:center;float:left;margin-top:-.375rem}button.icon-form-spacing:hover,button.icon-form-spacing:active,button.icon-form-spacing:focus,.button.icon-form-spacing:hover,.button.icon-form-spacing:active,.button.icon-form-spacing:focus{background:none transparent !important}button.icon-form-spacing:hover i.fa,button.icon-form-spacing:active i.fa,button.icon-form-spacing:focus i.fa,.button.icon-form-spacing:hover i.fa,.button.icon-form-spacing:active i.fa,.button.icon-form-spacing:focus i.fa{color:#cc2350 !important}@media screen and (max-width: 39.99875em){.off-canvas-wrapper{position:relative;min-height:100%}}.off-canvas.is-closed{visibility:visible}.off-canvas{background:#55565a;overflow:hidden;width:180px;transform:translateX(-130px);z-index:999}.off-canvas .menu label,.off-canvas .accordion label{color:#c7c7c7;font-size:0.6875rem}.off-canvas .menu a,.off-canvas .menu label.sidebar-checkbox-label,.off-canvas .accordion a,.off-canvas .accordion label.sidebar-checkbox-label{padding:0;font-size:0.75rem;color:#c7c7c7;background:none transparent}.off-canvas .menu a:hover,.off-canvas .menu label.sidebar-checkbox-label:hover,.off-canvas .accordion a:hover,.off-canvas .accordion label.sidebar-checkbox-label:hover{color:#fff}.off-canvas .menu a:hover .fa,.off-canvas .menu label.sidebar-checkbox-label:hover .fa,.off-canvas .accordion a:hover .fa,.off-canvas .accordion label.sidebar-checkbox-label:hover .fa{color:#fff;background:#2e2e2e}@media screen and (max-width: 39.99875em){.off-canvas .menu a:hover,.off-canvas .menu label.sidebar-checkbox-label:hover,.off-canvas .accordion a:hover,.off-canvas .accordion label.sidebar-checkbox-label:hover{background:#2e2e2e}}.off-canvas.position-right{transform:translateX(180px)}.off-canvas .menu li.menu-trigger{background:#414244;height:3.125rem}.off-canvas .menu li button{width:100%;line-height:3.125rem;height:3.125rem;overflow:hidden;padding:0;text-align:right;background:#414244;display:block}@media screen and (min-width: 64em){.off-canvas .menu li button{opacity:0.5}}.off-canvas .menu li .text{width:130px;display:inline-block;padding:0 1rem;position:relative;line-height:1rem;padding-top:19px;float:left}@media screen and (max-width: 39.99875em){.off-canvas .menu li .text .desktop{display:none}}.off-canvas .menu li .fa{font-size:1.5rem;height:3.125rem;width:3.125rem;line-height:3.125rem;text-align:center;color:#ababad}.off-canvas .menu li .fa.fa-emma{background:url(../images/emmasprite-alt.svg) no-repeat center 0 !important;display:inline-block;overflow:hidden}@media screen and (max-width: 39.99875em){.off-canvas .menu li .fa.fa-emma{display:block;height:24px;background:url(../images/emmasprite-alt.svg) no-repeat center -16px !important;background-size:auto 120px !important}}.off-canvas .menu li.active{background:none transparent}.off-canvas .menu li.active a{color:#fff}.off-canvas .menu li.active .fa{background:#cc2350;color:#fff}.off-canvas .menu li.active:hover .fa{background:#cc2350}.off-canvas .menu li:hover .fa.fa-emma{background:#2e2e2e url(../images/emmasprite-alt.svg) no-repeat center -50px !important}@media screen and (max-width: 39.99875em){.off-canvas .menu li:hover .fa.fa-emma{display:block;height:24px;background:#2e2e2e url(../images/emmasprite-alt.svg) no-repeat center -76px !important;background-size:auto 120px !important}}.off-canvas .menu li.active .fa.fa-emma{background:#cc2350 url(../images/emmasprite-alt.svg) no-repeat center -50px !important}@media screen and (max-width: 39.99875em){.off-canvas .menu li.active .fa.fa-emma{display:block;height:24px;background:#cc2350 url(../images/emmasprite-alt.svg) no-repeat center -76px !important;background-size:auto 120px !important}}@media screen and (max-width: 39.99875em){.off-canvas{position:fixed;bottom:0;right:0;left:0;top:auto;width:100%;height:auto;transform:translateX(0)}.off-canvas .menu.vertical{flex-direction:row}.off-canvas .menu li{float:left;text-align:center;width:20%;padding:0}.off-canvas .menu li .emma-logo{margin:0 auto;background:url(../images/emmasprite.svg) no-repeat 0 center !important;height:24px;width:24px;position:relative;display:block}.off-canvas .menu li .emma-logo-alt{margin:0 auto;background:url(../images/emmasprite-alt.svg) no-repeat 0 center !important;height:24px;width:32px;position:relative;display:block}.off-canvas .menu li.active a{background:#cc2350}.off-canvas .menu li.menu-trigger{display:none}.off-canvas .menu li a{width:100%;padding:8px 0 23px;position:relative;display:block;line-height:normal}.off-canvas .menu li a .fa{display:block;text-align:center;width:auto;height:auto;line-height:normal;font-size:1.5rem}.off-canvas .menu li a .text{font-size:0.5625rem;padding:0;width:auto;position:absolute;bottom:8px;left:0;right:0;top:auto;height:auto}}.off-canvas .accordion{background:#55565a !important}.off-canvas .accordion a.accordion-title{outline:none;background:#55565a !important;padding:1rem 1rem 1rem 2rem;font-size:0.8125rem;border:none}.off-canvas .accordion a.accordion-title:active,.off-canvas .accordion a.accordion-title:focus,.off-canvas .accordion a.accordion-title:hover{background:#55565a !important}.off-canvas .accordion a.accordion-title:before{font-family:'FontAwesome';content:'\\\\f078';right:auto;left:1rem;font-size:0.625rem;top:1.5rem}.off-canvas .accordion .accordion-item.is-active a.accordion-title{color:#fff}.off-canvas .accordion .accordion-item.is-active a.accordion-title:before{font-family:'FontAwesome';content:'\\\\f077 ';right:auto;left:1rem;font-size:0.625rem;top:1.5rem}.off-canvas .accordion .accordion-content{background:#2e2e2e;color:#fff;font-size:0.75rem;border:none;padding-top:1rem;padding-bottom:1rem}.off-canvas .accordion .accordion-content .input-icon{position:relative}.off-canvas .accordion .accordion-content .input-icon .fa{color:#ababad;position:absolute;left:0.625rem;top:0.625rem}.off-canvas .accordion .accordion-content .input-icon input{padding-left:1.75rem}.off-canvas .accordion .accordion-content .menu li{text-align:left;display:block !important;float:none;position:relative;width:100%}.off-canvas .accordion .accordion-content .menu li label.sidebar-checkbox-label{padding:0.5rem 0;text-transform:none;line-height:normal;padding-left:1rem;font-size:0.75rem}.off-canvas .accordion .accordion-content .menu li label,.off-canvas .accordion .accordion-content .menu li input{margin-bottom:0}.off-canvas .accordion .accordion-content .menu li input[type='checkbox']{-webkit-appearance:none;background-color:#fff;position:absolute;left:0;top:0.5rem;border:1px solid #cacece;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05);padding:0;height:0.875rem;width:0.875rem;display:inline-block;margin:0}.off-canvas .accordion .accordion-content .menu li input[type='checkbox']active,.off-canvas .accordion .accordion-content .menu li input[type='checkbox']:checked:active{box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px 1px 3px rgba(0,0,0,0.1)}.off-canvas .accordion .accordion-content .menu li input[type='checkbox']:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}.off-canvas .accordion .accordion-content .menu li input[type='checkbox']:checked+label{color:#fff;font-weight:bold}.off-canvas .accordion .accordion-content .menu li input[type='checkbox']:checked:after{font-family:FontAwesome;content:'\\\\f00c';position:absolute;top:-1px;left:0;color:#cc2350;text-align:center;font-size:0.8125rem;height:0.8125rem;width:0.8125rem}.off-canvas .accordion .accordion-content input[type='search']{width:100% !important}.off-canvas .accordion .accordion-content .select2-container,.off-canvas .accordion .accordion-content .select2-container .select2-search--inline .select2-search__field{font-size:0.75rem !important}.off-canvas .accordion .accordion-content .sidebar-select2{font-size:0.75rem !important}.off-canvas .accordion .accordion-content .select2-container,.off-canvas .accordion .accordion-content input[type='text'],.off-canvas .accordion .accordion-content .select2-container .select2-selection--single{margin-bottom:0.75rem;font-size:0.75rem;height:2rem;line-height:normal}.off-canvas .accordion .accordion-content .select2-container .select2-selection--single .select2-selection__rendered{line-height:2rem}.off-canvas .accordion .accordion-content .select2-container .select2-search--inline .select2-search__field{height:1.5rem;min-height:1.5rem}.off-canvas .accordion .accordion-content .select2-container--default .select2-selection--multiple .select2-selection__choice{color:#0a0a0a;font-size:0.75rem;max-width:100%;text-overflow:ellipsis;overflow:hidden}.off-canvas .accordion .accordion-content .select2-selection__rendered{padding-right:8px}.off-canvas .accordion .accordion-content .select2-container--default .select2-selection--multiple .select2-selection__choice{padding:0 6px}.off-canvas .accordion .accordion-content .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{font-size:1rem;top:0}.off-canvas .accordion .accordion-content .select2-container .select2-search--inline .select2-search__field{margin-top:4px}.off-canvas .global-filter{padding:5px}.off-canvas .global-filter fieldset.global-filter-title{border:2px groove #c7c7c7;font-size:0.8125rem}.off-canvas .global-filter fieldset.global-filter-title legend.global-filter-legend{margin-left:calc(1rem - 5px);color:#c7c7c7}.off-canvas .global-filter .accordion a.accordion-title{padding-left:calc(2rem - 5px);line-height:1rem}.off-canvas .global-filter .accordion a.accordion-title:before{left:calc(1rem - 5px)}.off-canvas .global-filter .accordion .accordion-item.is-active a.accordion-title:before{left:calc(1rem - 5px)}.off-canvas-content{padding-left:3.125rem}@media screen and (max-width: 39.99875em){.off-canvas-content{padding-left:0}}.off-canvas.position-right{width:250px;transform:translateX(250px)}@media screen and (max-width: 39.99875em){.off-canvas.position-right{position:fixed;bottom:0;right:-250px;left:auto;top:0;width:250px;height:auto}}.off-canvas.position-right.is-open{transform:translateX(0)}@media screen and (max-width: 39.99875em){.off-canvas.position-right.is-open{transform:translateX(-250px)}}.off-canvas.position-right.is-open ~ .off-canvas-content{transform:translateX(-250px)}.off-canvas-wrapper.right-is-open .off-canvas.position-left{transform:translateX(-250px) !important}.off-canvas-scroll{max-height:100vh;overflow:hidden;overflow-y:auto}header{background:#fff;left:3.125rem;right:0;z-index:10;max-width:100%;margin-right:auto;margin-left:auto;position:fixed}@media print, screen and (min-width: 40em){header{height:3.125rem}}header::before,header::after{display:table;content:' ';flex-basis:0;order:1}header::after{clear:both}@media screen and (max-width: 39.99875em){header{height:auto;position:static}}header .section{color:#8f1838;text-transform:uppercase;letter-spacing:4px;font-size:.625rem;font-weight:600;padding-top:1.0625rem;white-space:nowrap;text-overflow:ellipsis}header .section,header .logo,header .user-options{width:33.33333%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){header .section,header .logo,header .user-options{padding-right:1.875rem;padding-left:1.875rem}}header .section,header .section:last-child:not(:first-child),header .logo,header .logo:last-child:not(:first-child),header .user-options,header .user-options:last-child:not(:first-child){float:left;clear:none}header .section:last-child:not(:first-child),header .logo:last-child:not(:first-child),header .user-options:last-child:not(:first-child){float:right}header .user-options{padding-right:1.375rem}@media print, screen and (min-width: 64em){header .user-options{padding-right:1.875rem}}header .logo{text-align:center}header .logo a{display:block;margin:0 auto;width:100px}@media print, screen and (min-width: 40em){header .logo a{padding-top:.675rem}}header .logo a img{width:100px}header .logo.emma a{width:146px}header .logo.emma a img{width:146px;margin-top:-8px;margin-bottom:-4px}@media screen and (max-width: 39.99875em){header .section{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;text-align:center;padding-bottom:.35rem;padding-top:.35rem;background:#8f1838;color:#fff}}@media screen and (max-width: 39.99875em) and (min-width: 40em){header .section{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (max-width: 39.99875em){header .section,header .section:last-child:not(:first-child){float:left;clear:none}header .section:last-child:not(:first-child){float:right}header .logo{width:41.66667%;float:left;padding-right:.625rem;padding-left:.625rem;padding-top:.625rem;padding-bottom:.625rem}}@media screen and (max-width: 39.99875em) and (min-width: 40em){header .logo{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (max-width: 39.99875em){header .logo,header .logo:last-child:not(:first-child){float:left;clear:none}header .logo:last-child:not(:first-child){float:right}header .logo a{text-align:left;margin:0}header .user-options{padding-top:0;width:58.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (max-width: 39.99875em) and (min-width: 64em){header .user-options{padding-bottom:.625rem}}@media screen and (max-width: 39.99875em) and (min-width: 40em){header .user-options{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (max-width: 39.99875em){header .user-options,header .user-options:last-child:not(:first-child){float:left;clear:none}header .user-options:last-child:not(:first-child){float:right}}header h1{color:#8f1838;font-family:Raleway;margin:0;font-weight:300;text-transform:uppercase;letter-spacing:4px;font-size:.625rem;padding:0;font-weight:600}@media screen and (max-width: 39.99875em){header h1{color:#fff}}header .dropdown.menu{display:inline-block;width:auto;text-align:left;float:right}header .dropdown.menu>li:hover,header .dropdown.menu>li:active{cursor:pointer}header .dropdown.menu>li:hover .fa,header .dropdown.menu>li:active .fa{color:#8f1838}header .dropdown.menu>li.is-dropdown-submenu-parent a{padding:0 .5rem}@media print, screen and (min-width: 64em){header .dropdown.menu>li.is-dropdown-submenu-parent a{padding:0 .5rem}}header .dropdown.menu>li>a{height:3.125rem;line-height:55px}header .dropdown.menu.account>li>a{padding-right:1.625rem;white-space:nowrap;color:#8f1838;text-transform:uppercase;letter-spacing:1px;font-size:.625rem;font-weight:600;line-height:60px}@inlude breakpoint (large){header .dropdown.menu.account>li>a{line-height:3.125rem}}header .dropdown.menu.account>li>a .fa{font-size:1.5rem}header .dropdown.menu.account>li>a strong{line-height:3.125rem;text-transform:none;font-size:.9375rem;letter-spacing:normal;display:block;font-weight:400;color:#2e2e2e}@media print, screen and (min-width: 64em){header .dropdown.menu.account.browsing-as>li>a{line-height:.9375rem;padding-top:.75rem}header .dropdown.menu.account.browsing-as>li>a strong{line-height:.9375rem}}header .dropdown.menu.admin>li>a:after,header .dropdown.menu.help>li>a:after{display:none}header .dropdown.menu .fa{color:#ababad;font-size:1.375rem}header .dropdown.menu a.active .fa{color:#cc2350 !important}header .dropdown.menu .submenu.is-dropdown-submenu{color:#fff;padding:0;line-height:normal;font-size:.8125rem;z-index:9999}@media print, screen and (min-width: 40em){header .dropdown.menu .submenu.is-dropdown-submenu{top:3.125rem}}header .dropdown.menu .submenu.is-dropdown-submenu li{padding:0;margin:0;font-family:Raleway}header .dropdown.menu .submenu.is-dropdown-submenu li a{padding:0;margin:0;font-family:Raleway;color:#fff;text-align:left !important;float:none;display:block;padding:1rem;line-height:1.25}header .dropdown.menu .submenu.is-dropdown-submenu li a:hover,header .dropdown.menu .submenu.is-dropdown-submenu li a:active{background:#47484c}header .dropdown.menu .submenu.is-dropdown-submenu li a.active{background:#8f1838}button.account{background:none transparent;color:#8f1838;padding:0 1.625rem 0 0;margin:0;outline:none;height:3.125rem;font-weight:600;white-space:nowrap;text-align:left;overflow:hidden;text-transform:uppercase;letter-spacing:1px;font-size:.625rem;line-height:.9375rem;position:relative;max-width:70%}button.account .fa.fa-user{color:#ababad;font-size:1.375rem}button.account .account-truncate{display:block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}button.account strong{display:inline;color:#0a0a0a;font-weight:400;font-size:.9375rem;text-transform:none;letter-spacing:normal}button.account:after{position:absolute;display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#ababad transparent transparent;right:5px;left:auto;top:50%;margin-top:-3px}button.account:hover,button.account:active,button.account:focus{background:none transparent;color:#8f1838}button.account:hover:after,button.account:active:after,button.account:focus:after{border-color:#cc2350 transparent transparent}#impersonation-dropdown.dropdown-pane{background:#55565a;color:#fff;padding:0}#impersonation-dropdown.dropdown-pane input{box-shadow:none}#impersonation-dropdown.dropdown-pane.is-open{left:auto !important;right:0 !important}@media screen and (max-width: 39.99875em){#impersonation-dropdown.dropdown-pane.is-open{width:100%;max-width:100%}}#impersonation-dropdown.dropdown-pane label{color:#c7c7c7;font-size:.6875rem}#impersonation-dropdown.dropdown-pane .matches{background:#616367;padding:1rem 0 0;border-top:1px solid #2e2e2e}#impersonation-dropdown.dropdown-pane .matches ul,#impersonation-dropdown.dropdown-pane .matches li{list-style-type:none;margin:0}#impersonation-dropdown.dropdown-pane .matches label{padding-left:1rem}#impersonation-dropdown.dropdown-pane .matches li{border-top:1px solid #505155;font-size:.8125rem}#impersonation-dropdown.dropdown-pane .matches li:first-child{border-top:none}#impersonation-dropdown.dropdown-pane .matches li strong{font-size:.9375rem;display:block}#impersonation-dropdown.dropdown-pane .matches a{padding:.375rem 1rem;color:#fff;display:block}#impersonation-dropdown.dropdown-pane .matches a:hover,#impersonation-dropdown.dropdown-pane .matches a:focus,#impersonation-dropdown.dropdown-pane .matches a:active{background:#8f1838;color:#fff}#impersonation-dropdown.dropdown-pane .logout{padding:1rem;border-bottom:1px solid #2e2e2e}#impersonation-dropdown.dropdown-pane .logout .button,#impersonation-dropdown.dropdown-pane .logout button{padding:.375rem 1rem;text-align:center;font-size:.8125rem;display:block;width:100%;margin:0}#impersonation-dropdown.dropdown-pane .impersonating{position:relative;padding:1rem;border-bottom:1px solid #2e2e2e;background:#616367}#impersonation-dropdown.dropdown-pane .impersonating button{padding-top:.375rem;padding-bottom:.375rem;position:absolute;right:1rem;top:2rem}#impersonation-dropdown.dropdown-pane .impersonating p{font-size:.8125rem;margin:0}#impersonation-dropdown.dropdown-pane .impersonating p strong{font-size:.9375rem;display:block}#impersonation-dropdown.dropdown-pane .impersonate{padding:1rem;position:relative;border-bottom:solid 1px #2e2e2e}#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button{padding-right:3.125rem}#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button input{margin:0}#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button button{height:2.3125rem;width:2.3125rem;margin:0;border:1px solid #ababad;text-align:center;padding:0;color:#ababad;position:absolute;right:1rem;bottom:1rem;font-size:.8125rem;margin-bottom:1px}#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button button:hover,#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button button:active,#impersonation-dropdown.dropdown-pane .impersonate .pad-for-button button:focus{color:#fff;background:#cc2350;border:1px solid #cc2350}.match-container{height:200px;background:#616367 url(../images/loader-dark.gif) no-repeat center center;overflow:hidden;overflow-y:auto}.match-container ul{min-height:200px;background:#616367}.top-bar{height:3.125rem;overflow:hidden;clear:both;position:fixed;top:3.125rem;left:3.125rem;right:0;z-index:9;padding:0;border-bottom:1px solid #d5d5d6}@media screen and (max-width: 39.99875em){.top-bar{padding-left:0 !important;padding-right:0}}.top-bar .row{width:100%}@media screen and (max-width: 39.99875em){.top-bar .row{padding-left:0 !important;padding-right:0}}.top-bar .row .columns{padding-right:0;padding-left:0;padding-left:20px;padding-right:25px}@media screen and (max-width: 39.99875em){.top-bar .row .columns{padding-left:0 !important;padding-right:0}}.top-bar button,.top-bar .button{height:2rem;width:2rem;font-size:0.75rem;text-transform:uppercase}@media screen and (max-width: 39.99875em){.top-bar{height:auto;position:static}}.top-bar .input-sentence{white-space:no-wrap;display:block;overflow:hidden;font-size:0.8125rem}.top-bar .input-sentence input,.top-bar .input-sentence select{width:auto;margin:0 2px;display:inline-block}.top-bar .input-sentence input{max-width:80px}@media screen and (max-width: 39.99875em){.top-bar .input-sentence{margin-bottom:0.5rem}}.top-bar button,.top-bar .button{background:#8f1838;padding:0 1.5rem;color:#fff;width:auto}.top-bar button:hover,.top-bar button:active,.top-bar button:focus,.top-bar .button:hover,.top-bar .button:active,.top-bar .button:focus{background:#cc2350}.top-bar button.go{border:1px solid #8f1838;background:none transparent;color:#8f1838;height:2rem;width:2rem;position:relative;padding:0;top:-2px;transition:ease all 0.25s}.top-bar button.go:focus,.top-bar button.go:active,.top-bar button.go:hover{color:#fff;background:#8f1838}.top-bar button,.top-bar .button{border:1px solid #8f1838;background:none transparent;color:#8f1838;padding:0 1.5rem;color:#8f1838;width:auto}.top-bar button:hover,.top-bar button:active,.top-bar button:focus,.top-bar .button:hover,.top-bar .button:active,.top-bar .button:focus{background:#8f1838;color:#fff}.top-bar input,.top-bar select{height:2rem;line-height:2rem}.top-bar button.page-action,.top-bar .button.page-action{vertical-align:top;margin-bottom:0 !important;padding:0 10px 0 40px;margin:0 !important;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;height:3.125rem;line-height:normal !important}@media screen and (max-width: 39.99875em){.top-bar button.page-action,.top-bar .button.page-action{padding-right:10px;padding-left:25px !important;margin:0 !important}.top-bar button.page-action i.fa,.top-bar .button.page-action i.fa{font-size:1rem !important;left:0 !important}}.top-bar button.page-action.filter,.top-bar .button.page-action.filter{font-size:0.875rem}@media print, screen and (min-width: 40em){.top-bar button.page-action,.top-bar .button.page-action{margin-right:-4px !important}}.top-bar button.page-action:hover,.top-bar button.page-action:active,.top-bar button.page-action:focus,.top-bar button.page-action.active,.top-bar .button.page-action:hover,.top-bar .button.page-action:active,.top-bar .button.page-action:focus,.top-bar .button.page-action.active{background:#dedede}.top-bar button.page-action i.fa,.top-bar .button.page-action i.fa{color:#8f1838;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;height:3.125rem;width:1.5rem;line-height:3.125rem;text-align:center;float:left}.top-bar button.page-action:hover .fa,.top-bar button.page-action:active .fa,.top-bar button.page-action:focus .fa,.top-bar button.page-action.active .fa,.top-bar .button.page-action:hover .fa,.top-bar .button.page-action:active .fa,.top-bar .button.page-action:focus .fa,.top-bar .button.page-action.active .fa{color:#cc2350}.top-bar-left,.top-bar-right{list-style-type:none;margin:0;padding:0}.top-bar-left li,.top-bar-right li{float:left;line-height:3.125rem}.top-bar-left li a,.top-bar-right li a{vertical-align:center;font-size:0.6875rem;font-weight:600;color:#2e2e2e;padding:0 15px;height:3.125rem;line-height:3.125rem;display:inline-block;float:left;overflow:hidden}.top-bar-left li a .fa,.top-bar-right li a .fa{color:#8f1838;font-size:1.25rem;position:relative;top:3px;margin-right:3px}.top-bar-left li a:hover,.top-bar-right li a:hover{background:#e1e1e1}.top-bar-left li a:hover .fa,.top-bar-right li a:hover .fa{color:#cc2350}.top-bar-left li.filters,.top-bar-right li.filters{font-size:0.875rem}.top-bar-left li.filters .fa,.top-bar-right li.filters .fa{color:#ababad;font-size:1.25rem;position:relative;top:1px;margin-right:3px}.top-bar .button.page-action{overflow:hidden;height:3.125rem;display:inline-block;width:auto;padding-top:0.755rem}.top-bar .button.page-action.single-line{padding-top:0;line-height:52px !important}@media screen and (max-width: 39.99875em){.top-bar .has-active-state .button.page-action,.top-bar .has-active-state button.page-action{background:none transparent !important}}.top-bar-flex-item-group{display:flex;justify-items:flex-start;align-items:center;font-size:0.875rem;padding:0 5px;margin-right:1rem;min-width:15%}.top-bar-flex-item-group .top-bar-flex-item-label{text-align:center}@media screen and (min-width: 40em) and (max-width: 63.99875em){.top-bar-flex-item-group .top-bar-flex-item-label{font-size:0.6875rem}}.login-checkbox{margin-top:1rem}.login-checkbox label{font-weight:600}.login,ux-dialog-body{background:#fff;min-height:100vh;width:100%;display:table}.login .login-helpers,ux-dialog-body .login-helpers{margin-top:.5rem}.login .login-helpers a,ux-dialog-body .login-helpers a{display:inline-block;height:3.125rem;padding-top:.6875rem !important;padding:0 20px 0 50px;margin:0 !important;text-align:left;color:#2e2e2e;text-transform:none;font-size:.6875rem;border:none;position:relative;height:3.125rem;line-height:normal !important}@media screen and (max-width: 39.99875em){.login .login-helpers a,ux-dialog-body .login-helpers a{margin:0 !important}.login .login-helpers a i.fa,ux-dialog-body .login-helpers a i.fa{font-size:1rem !important}}.login .login-helpers a.filter,ux-dialog-body .login-helpers a.filter{font-size:.875rem}@media print, screen and (min-width: 40em){.login .login-helpers a,ux-dialog-body .login-helpers a{margin-right:-4px !important}}.login .login-helpers a i.fa,ux-dialog-body .login-helpers a i.fa{color:#8f1838;font-size:1.25rem;position:absolute;top:0;left:20px;margin-right:3px;height:3.125rem;width:1.5rem;line-height:3.125rem;text-align:center;float:left}.login .login-helpers a:hover .fa,.login .login-helpers a:active .fa,.login .login-helpers a:focus .fa,.login .login-helpers a.active .fa,ux-dialog-body .login-helpers a:hover .fa,ux-dialog-body .login-helpers a:active .fa,ux-dialog-body .login-helpers a:focus .fa,ux-dialog-body .login-helpers a.active .fa{color:#cc2350}.login .shaded,.login .dialog-content,ux-dialog-body .shaded,ux-dialog-body .dialog-content{background:#f5f5f5;padding:1.5rem;text-align:left;max-width:550px;margin:0 auto}.login .shaded h2,.login .dialog-content h2,ux-dialog-body .shaded h2,ux-dialog-body .dialog-content h2{margin-bottom:1.5rem;padding-bottom:0}.login .shaded h2:before,.login .shaded h2:after,.login .dialog-content h2:before,.login .dialog-content h2:after,ux-dialog-body .shaded h2:before,ux-dialog-body .shaded h2:after,ux-dialog-body .dialog-content h2:before,ux-dialog-body .dialog-content h2:after{display:none}.login .shaded input,.login .dialog-content input,ux-dialog-body .shaded input,ux-dialog-body .dialog-content input{margin-bottom:.5rem}.login .shaded button,.login .dialog-content button,ux-dialog-body .shaded button,ux-dialog-body .dialog-content button{display:block;width:100%;margin-top:1.5rem}.login .shaded button+button,.login .dialog-content button+button,ux-dialog-body .shaded button+button,ux-dialog-body .dialog-content button+button{margin-top:0 !important}.login .dialog-content,ux-dialog-body .dialog-content{background:none transparent;padding:0}.login h1,.login h2,ux-dialog-body h1,ux-dialog-body h2{color:#55565a}.login h1,ux-dialog-body h1{font-size:2.25rem;text-transform:none;letter-spacing:normal;font-weight:300;max-width:500px;margin:0 auto 1.5rem;line-height:normal}@media screen and (max-width: 39.99875em){.login h1,ux-dialog-body h1{font-size:1.75rem}}.login h2,ux-dialog-body h2{position:relative;font-size:1.25rem;padding-bottom:1.5rem;margin-bottom:2rem;margin-top:-.5rem}@media screen and (max-width: 39.99875em){.login h2,ux-dialog-body h2{font-size:1rem}}.login h2:before,ux-dialog-body h2:before{position:absolute;content:'';bottom:0px;left:50%;margin-left:-25px;width:50px;height:1px;background-color:#4c4c4c}.login h2:after,ux-dialog-body h2:after{position:absolute;content:'';bottom:-5px;left:50%;margin-left:-12px;width:24px;height:1px;background-color:#4c4c4c}@media screen and (max-width: 39.99875em){.login,ux-dialog-body{display:block;padding-top:4rem}}.login .login-page,ux-dialog-body .login-page{display:table-cell;padding-top:3rem;padding-bottom:3rem;vertical-align:middle}@media screen and (max-width: 39.99875em){.login .login-page,ux-dialog-body .login-page{display:block;margin:0 auto}}.login img.logo,ux-dialog-body img.logo{width:6.25rem;text-align:center;margin-bottom:1.5rem}.login-block{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;text-align:center}@media print, screen and (min-width: 40em){.login-block{padding-right:1.875rem;padding-left:1.875rem}}.login-block,.login-block:last-child:not(:first-child){float:left;clear:none}.login-block:last-child:not(:first-child){float:right}.login-block:last-child:last-child{float:left}@media print, screen and (min-width: 40em){.login-block{width:66.66667%;float:left;padding-right:.625rem;padding-left:.625rem;margin-left:16.66667%}}@media print, screen and (min-width: 40em) and (min-width: 40em){.login-block{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.login-block,.login-block:last-child:not(:first-child){float:left;clear:none}.login-block:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.login-block{width:50%;float:left;padding-right:.625rem;padding-left:.625rem;margin-left:25%}}@media print, screen and (min-width: 64em) and (min-width: 40em){.login-block{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.login-block,.login-block:last-child:not(:first-child){float:left;clear:none}.login-block:last-child:not(:first-child){float:right}}.link-grid{background:#e6e6e6;font-size:.8125rem}.link-grid.border-dark{border-top:1px solid #2e2e2e}.link-grid+.link-grid{border-top:1px solid #d5d5d6}.link-grid+.link-grid.border-dark{border-top:1px solid #a7a8aa}.link-grid.quickstart{position:relative}.link-grid.resources{padding-bottom:.5rem;padding-top:1.5rem}.link-grid.resources a .fa{position:absolute;left:1.5rem;top:2px;margin-right:3px}.link-grid.resources strong,.link-grid.resources .fa{font-size:1rem}.link-grid.resources a{padding:0 1.5rem 1rem 3rem;position:relative;display:inline-block}.link-grid.resources h2{margin-top:-1.5rem}.link-grid.resources strong{transition:ease all .25s}.link-grid h2{padding:1.25rem 0 0 0;font-size:1.5rem;margin-bottom:0;line-height:normal;padding-left:2rem;padding-right:2rem}@media screen and (max-width: 39.99875em){.link-grid h2{padding-left:0;padding-right:0;padding-top:.75rem;padding-bottom:.75rem}}.link-grid p{padding-left:2rem;padding-right:2rem}@media screen and (max-width: 39.99875em){.link-grid p{padding-left:0;padding-right:0}}.link-grid .row .column:nth-child(odd),.link-grid .row .columns:nth-child(odd){background:#e1e1e1}.link-grid .row .column:nth-child(even),.link-grid .row .columns:nth-child(even){background:#e6e6e6}@media print, screen and (min-width: 40em){.link-grid .row .column:nth-child(1),.link-grid .row .columns:nth-child(1),.link-grid .row .column:nth-child(3),.link-grid .row .columns:nth-child(3),.link-grid .row .column:nth-child(6),.link-grid .row .columns:nth-child(6),.link-grid .row .column:nth-child(8),.link-grid .row .columns:nth-child(8),.link-grid .row .column:nth-child(9),.link-grid .row .columns:nth-child(9),.link-grid .row .column:nth-child(11),.link-grid .row .columns:nth-child(11),.link-grid .row .column:nth-child(14),.link-grid .row .columns:nth-child(14),.link-grid .row .column:nth-child(16),.link-grid .row .columns:nth-child(16),.link-grid .row .column:nth-child(17),.link-grid .row .columns:nth-child(17),.link-grid .row .column:nth-child(19),.link-grid .row .columns:nth-child(19){background:#e1e1e1}.link-grid .row .column:nth-child(2),.link-grid .row .columns:nth-child(2),.link-grid .row .column:nth-child(4),.link-grid .row .columns:nth-child(4),.link-grid .row .column:nth-child(5),.link-grid .row .columns:nth-child(5),.link-grid .row .column:nth-child(7),.link-grid .row .columns:nth-child(7),.link-grid .row .column:nth-child(10),.link-grid .row .columns:nth-child(10),.link-grid .row .column:nth-child(12),.link-grid .row .columns:nth-child(12),.link-grid .row .column:nth-child(13),.link-grid .row .columns:nth-child(13),.link-grid .row .column:nth-child(15),.link-grid .row .columns:nth-child(15),.link-grid .row .column:nth-child(18),.link-grid .row .columns:nth-child(18),.link-grid .row .column:nth-child(20),.link-grid .row .columns:nth-child(20){background:#e6e6e6}}.link-grid .row .column.highlight,.link-grid .row .highlight.columns{background:#bb1f49}.link-grid .row .column.highlight a,.link-grid .row .highlight.columns a{border:1px solid #8f1838}.link-grid .row .column.highlight a strong,.link-grid .row .highlight.columns a strong{color:#fff}.link-grid .title{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.link-grid .title{padding-right:1.875rem;padding-left:1.875rem}}.link-grid .title,.link-grid .title:last-child:not(:first-child){float:left;clear:none}.link-grid .title:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.link-grid .title{width:25%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.link-grid .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.link-grid .title,.link-grid .title:last-child:not(:first-child){float:left;clear:none}.link-grid .title:last-child:not(:first-child){float:right}}@media screen and (max-width: 39.99875em){.link-grid .title{text-align:center}.link-grid .title h2{font-size:1.25rem}}.link-grid .grid{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.link-grid .grid{padding-right:1.875rem;padding-left:1.875rem}}.link-grid .grid,.link-grid .grid:last-child:not(:first-child){float:left;clear:none}.link-grid .grid:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.link-grid .grid{width:75%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.link-grid .grid{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.link-grid .grid,.link-grid .grid:last-child:not(:first-child){float:left;clear:none}.link-grid .grid:last-child:not(:first-child){float:right}}.link-grid.dark{background:#6e6f74}.link-grid.dark h2{color:#fff}.link-grid.dark .row .column:nth-child(odd),.link-grid.dark .row .columns:nth-child(odd){background:#696a6f}.link-grid.dark .row .column:nth-child(even),.link-grid.dark .row .columns:nth-child(even){background:#6e6f74}@media print, screen and (min-width: 40em){.link-grid.dark .row .column:nth-child(1),.link-grid.dark .row .columns:nth-child(1),.link-grid.dark .row .column:nth-child(3),.link-grid.dark .row .columns:nth-child(3),.link-grid.dark .row .column:nth-child(6),.link-grid.dark .row .columns:nth-child(6),.link-grid.dark .row .column:nth-child(8),.link-grid.dark .row .columns:nth-child(8),.link-grid.dark .row .column:nth-child(9),.link-grid.dark .row .columns:nth-child(9),.link-grid.dark .row .column:nth-child(11),.link-grid.dark .row .columns:nth-child(11),.link-grid.dark .row .column:nth-child(14),.link-grid.dark .row .columns:nth-child(14),.link-grid.dark .row .column:nth-child(16),.link-grid.dark .row .columns:nth-child(16),.link-grid.dark .row .column:nth-child(17),.link-grid.dark .row .columns:nth-child(17),.link-grid.dark .row .column:nth-child(19),.link-grid.dark .row .columns:nth-child(19){background:#696a6f}.link-grid.dark .row .column:nth-child(2),.link-grid.dark .row .columns:nth-child(2),.link-grid.dark .row .column:nth-child(4),.link-grid.dark .row .columns:nth-child(4),.link-grid.dark .row .column:nth-child(5),.link-grid.dark .row .columns:nth-child(5),.link-grid.dark .row .column:nth-child(7),.link-grid.dark .row .columns:nth-child(7),.link-grid.dark .row .column:nth-child(10),.link-grid.dark .row .columns:nth-child(10),.link-grid.dark .row .column:nth-child(12),.link-grid.dark .row .columns:nth-child(12),.link-grid.dark .row .column:nth-child(13),.link-grid.dark .row .columns:nth-child(13),.link-grid.dark .row .column:nth-child(15),.link-grid.dark .row .columns:nth-child(15),.link-grid.dark .row .column:nth-child(18),.link-grid.dark .row .columns:nth-child(18),.link-grid.dark .row .column:nth-child(20),.link-grid.dark .row .columns:nth-child(20){background:#6e6f74}}.link-grid.dark .row a{color:#fff}.link-grid.dark .row a strong{color:#fff}.link-grid.mono{background:#e6e6e6}.link-grid.mono .row .column,.link-grid.mono .row .columns{background:#e6e6e6}.link-grid.mono .row a:hover,.link-grid.mono .row a:active,.link-grid.mono .row a:focus{background:#e6e6e6}.link-grid.mono .row a:hover strong,.link-grid.mono .row a:active strong,.link-grid.mono .row a:focus strong{color:#2e2e2e;color:#8f1838}.link-grid .image{position:relative;display:none;overflow:hidden;margin:-1.5rem -1.5rem 1.5rem -1.5rem;background-repeat:no-repeat;background-position:center center}.link-grid.count strong{font-size:3rem}.link-grid a{padding:1.5rem;display:block;color:#55565a}@media screen and (max-width: 39.99875em){.link-grid a{padding:1rem}}.link-grid a .fa{font-size:1.5rem;display:block;margin-bottom:.25rem}.link-grid a strong{color:#2e2e2e;display:block;font-weight:500;font-size:1.125rem;line-height:normal}@media screen and (max-width: 39.99875em){.link-grid a strong{font-size:1rem}}.link-grid a:hover{background:#8f1838;color:#fff}.link-grid a:hover strong{color:#fff}.link-grid a .byline{display:block;margin-top:.75rem}.media-grid{padding:0}.media-grid>.column,.media-grid>.columns{padding:0 5px !important;text-align:left;margin-bottom:0 !important}.media-grid>.column a,.media-grid>.columns a{display:block}.media-grid .media-block{padding:1rem 0;display:block}.media-grid .media-block .button{padding-top:.25rem;padding-bottom:.25rem;display:inline-block;margin:1rem auto 0 auto}.media-grid a:hover .media-image img,.media-grid a:active .media-image img,.media-grid a:focus .media-image img{width:120%;left:-10%;top:-10%}.media-grid .media-image{width:100%;padding-top:55%;overflow:hidden;display:block;position:relative;background:#0a0a0a}.media-grid .media-image img{width:100%;max-width:none;position:absolute;left:0;top:0;width:100%;transition:ease .5s all}.media-grid .media-title{display:block;margin-bottom:.5rem;line-height:1.2;font-size:.875rem}.media-grid .media-description{display:block;font-size:.625rem;opacity:.8;padding-right:1rem}.search-options .medium-text-right .select2,.search-options .text-right .select2,.search-options .large-text-right .select2{text-align:left}.medium-text-right .select2,.text-right .select2,.large-text-right .select2{text-align:left}input[type=\\\"text\\\"].inline,input[type=\\\"number\\\"].inline{width:auto !important;min-width:1px !important;display:inline-block;margin-right:.25rem;margin-bottom:0}input[type=\\\"text\\\"].inline.small,input[type=\\\"number\\\"].inline.small{width:70px !important}input[type=\\\"text\\\"].header-input,input[type=\\\"number\\\"].header-input{margin-top:.275rem;margin-bottom:0}input[type=\\\"number\\\"]{width:70px !important}input[type=\\\"number\\\"].inline{width:70px !important}.row.shaded{background:#f5f5f5;padding-top:1.25rem;border-top:1px solid #d5d5d6}select.inline{width:auto;display:inline-block;margin:0}.form-rule{border-bottom:1px solid #a6a6a6;margin:.5rem 0 1rem -1.5rem}.row .submit-buttons{padding-bottom:1.5rem}.row .submit-buttons p{font-size:.8125rem;line-height:normal;color:#454547}@media screen and (max-width: 39.99875em){.row .submit-buttons{text-align:center;padding:.75rem 10px 2rem !important}.row .submit-buttons button,.row .submit-buttons .button{display:block;width:100%}}.row .submit-buttons button{margin-right:5px}@media screen and (max-width: 39.99875em){.row .submit-buttons button{display:block;width:100%;margin:0 auto .75rem}}.label{font-size:.6875rem;margin-bottom:0}label,.label{text-transform:uppercase;margin-bottom:.125rem}input[type='text']{padding-top:.25rem;padding-bottom:.25rem}select{padding-top:0;padding-bottom:0}.form button.margin{margin-top:.5rem !important}.form>.row button{margin-bottom:0}.form>.row+.row{margin-top:0}.form>.row.match+.row{margin-top:0rem}a.email-reset{margin-top:2px;display:inline-block}a.email-reset .fa{margin-right:5px;font-size:1rem;padding:.25rem 0}.form label input[type=\\\"checkbox\\\"].inline{top:5px;margin-right:3px}.form label input[type=\\\"checkbox\\\"]{-webkit-appearance:none;background-color:#fff;border:1px solid #cacece;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05);padding:0;height:1.25rem;width:1.25rem;display:inline-block;margin:0;position:relative}.form label input[type=\\\"checkbox\\\"]active,.form label input[type=\\\"checkbox\\\"]:checked:active{box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px 1px 3px rgba(0,0,0,0.1)}.form label input[type=\\\"checkbox\\\"]:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}.form label input[type=\\\"checkbox\\\"]:checked:after{font-family:FontAwesome;content:\\\"\\\\f00c\\\";position:absolute;top:0;left:2px;color:#cc2350;text-align:center;font-size:.875rem;height:.875rem;width:.875rem}.form label input[type=\\\"checkbox\\\"]:disabled{background:#ebebeb}label.is-invalid-label+datepicker input{border:1px solid #db2121 !important}.form .row .columns{padding:0 5px 5px 5px !important}.form .row .columns p{font-size:.9375rem;margin-bottom:.75rem}@media print, screen and (min-width: 64em){.form .row .columns p{margin-bottom:0}}.form .row .columns.icon{position:relative}.form .row .columns.icon input{padding-left:2rem}.form .row .columns.icon .fa{position:absolute;left:.875rem;bottom:.375rem;z-index:6;color:#ababad;display:block;height:2.4375rem;line-height:2.4375rem}.form .row .columns.icon datepicker .fa,.form .row .columns.icon .is-invalid-input+.fa{bottom:auto !important;top:1.25rem !important}.form .row input,.form .row select,.form .row textarea{margin-bottom:.25rem}.form-block{border-top:1px solid #d5d5d6}.form-block p .description{display:block;font-size:.675rem}.form-block .select2{font-size:1rem !important}.form-block.shaded,.form-block.no-border{border-top:none !important}.form-block.shaded+.search-options{border-top:1px solid #d5d5d6}.form-block+.form-block.shaded{border-top:1px solid #d5d5d6 !important}.form-block+.form-block.shaded.audit{border-top:1px solid #b9aa9d !important}.form-block.audit{border-top:1px solid #b9aa9d !important}.form-block .form .row+ul{margin-top:1.5rem !important}.form-block{padding-top:1.5rem;font-size:.8125rem}@media print, screen and (min-width: 40em){.form-block{padding-top:0 !important}}.form-block.last{border-top:1px solid #d5d5d6 !important}.form-block .form-id{font-size:1.25rem;color:#8f1838;margin-bottom:0;display:block}@media screen and (max-width: 39.99875em){.form-block .form-id{text-align:center}}.form-block .form-id span{color:#55565a;font-size:1rem}.form-block .form-id button{float:right;color:#ababad;font-size:1.375rem;line-height:1.25rem}.form-block .form-id button:hover,.form-block .form-id button:active,.form-block .form-id button:focus{color:#cc2350}.form-block.shaded{background:#f5f5f5}.form-block.shaded.audit{background:#f3f0ee}.form-block .title{padding-top:1.25rem;width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media screen and (max-width: 39.99875em){.form-block .title{padding-top:0}}@media print, screen and (min-width: 40em){.form-block .title{padding-right:1.875rem;padding-left:1.875rem}}.form-block .title,.form-block .title:last-child:not(:first-child){float:left;clear:none}.form-block .title:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.form-block .title{width:33.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .title,.form-block .title:last-child:not(:first-child){float:left;clear:none}.form-block .title:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .title{width:16.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .title,.form-block .title:last-child:not(:first-child){float:left;clear:none}.form-block .title:last-child:not(:first-child){float:right}}@media screen and (max-width: 39.99875em){.form-block .title{text-align:center}}.form-block .form{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;padding-top:1.25rem !important;padding-bottom:1.1875rem}.form-block .form.submit{padding-left:5px;padding-top:1.5rem !important}@media screen and (max-width: 39.99875em){.form-block .form.submit{text-align:center;padding:.75rem 10px 2rem !important}}.form-block .form.submit button{margin-right:5px}@media screen and (max-width: 39.99875em){.form-block .form.submit button{display:block;width:100%;margin:0 auto .75rem}}@media print, screen and (min-width: 40em){.form-block .form{padding-right:1.875rem;padding-left:1.875rem}}.form-block .form,.form-block .form:last-child:not(:first-child){float:left;clear:none}.form-block .form:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.form-block .form{width:66.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .form{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .form,.form-block .form:last-child:not(:first-child){float:left;clear:none}.form-block .form:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .form{width:83.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .form{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .form,.form-block .form:last-child:not(:first-child){float:left;clear:none}.form-block .form:last-child:not(:first-child){float:right}}@media screen and (max-width: 39.99875em){.form-block .form{padding-top:.75rem !important;padding-right:5px}}.form-block .form .row{padding-right:25px}.form-block .form .row.table-results{padding-right:0}.form-block .form .row.table-results .columns:last-child{padding-right:0 !important}.form-block .form .row.table-results table thead tr th,.form-block .form .row.table-results table tbody tr td{padding-left:1rem !important}@media screen and (max-width: 39.99875em){.form-block .form .row{padding-right:10px;padding-left:5px}}.form-block .form .row .columns{padding:0 5px 5px 5px !important}.form-block .form .row .columns.icon{position:relative}.form-block .form .row .columns.icon input{padding-left:2rem}.form-block .form .row .columns.icon input:focus+.fa{color:#cc2350}.form-block .form .row .columns.icon .fa{position:absolute;left:.875rem;bottom:.625rem;z-index:6;color:#ababad;display:block;height:2.4375rem;line-height:2.4375rem}.form-block .form .row.no-format{margin-left:0;margin-right:0;padding:0 !important}.form-block .form .row.no-format .columns{padding:0 !important}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns{width:50%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .form.auto-format .columns{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns,.form-block .form.auto-format .columns:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns{width:33.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .form.auto-format .columns{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns,.form-block .form.auto-format .columns:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns{width:25%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block .form.auto-format .columns{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns,.form-block .form.auto-format .columns:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.full{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .form.auto-format .columns.full{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.full,.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.full{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .form.auto-format .columns.full{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.full,.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.full{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block .form.auto-format .columns.full{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.full,.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.full:last-child:not(:first-child){float:right}}@media screen and (max-width: 39.99875em){.form-block .form.auto-format .columns.submit{padding-top:1rem !important}}.form-block .form.auto-format .columns.submit button{margin:5px !important}@media screen and (max-width: 39.99875em){.form-block .form.auto-format .columns.submit button{display:block;margin:0 auto .75rem !important;width:100%}.form-block .form.auto-format .columns.submit button:last-child{margin-bottom:0 !important}}.form-block .form.auto-format .columns.submit button:first-child{margin-left:0 !important}.form-block .form.auto-format .columns.submit button:last-child{margin-right:0 !important}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.double{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .form.auto-format .columns.double{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.double,.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.double{width:66.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .form.auto-format .columns.double{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.double,.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.double{width:50%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block .form.auto-format .columns.double{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.double,.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.double:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.triple{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block .form.auto-format .columns.triple{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block .form.auto-format .columns.triple,.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.triple{width:75%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block .form.auto-format .columns.triple{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block .form.auto-format .columns.triple,.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.triple{width:75%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block .form.auto-format .columns.triple{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block .form.auto-format .columns.triple,.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:left;clear:none}.form-block .form.auto-format .columns.triple:last-child:not(:first-child){float:right}}.form-block .form.auto-format .columns:last-child:last-child:last-child{float:left}.form-block .form.help .column,.form-block .form.help .columns{margin-bottom:1.5rem}@media print, screen and (min-width: 40em){.form-block .form.help .column,.form-block .form.help .columns{padding-right:20px !important}}.form-block .form.help .column a,.form-block .form.help .columns a{color:#0a0a0a;padding-left:1.125rem;position:relative;margin-bottom:.25rem}.form-block .form.help.user-guide a:before{font-family:\\\"FontAwesome\\\";display:block;content:\\\"\\\\f0f6\\\";font-weight:normal;position:absolute;left:0;top:0;color:#8f1838}.form-block .form.help.videos .media-title{color:#0a0a0a;padding-left:1.125rem;position:relative;margin-bottom:.25rem}.form-block .form.help.videos .media-title:before{font-family:\\\"FontAwesome\\\";display:block;content:\\\"\\\\f144 \\\";font-weight:normal;position:absolute;left:0;top:0;color:#8f1838}@media print, screen and (min-width: 40em){.form-block .form.help.videos{margin-left:-5px}}.form-block .form.help.videos a{padding-left:0}.form-block h2{font-size:1.25rem;margin-bottom:0;line-height:normal}.form-block h2 .fa{font-size:1.5rem;margin-right:.25rem}.form-block h3{font-size:1.25rem}.form-block p{font-size:.8125rem;line-height:normal;color:#848487}.form-block p a{display:inline-block;margin-top:.25rem;font-size:.875rem;transition:ease all .25s}.form.article p a{margin-top:0}.form-block.adhoc .title{padding-top:1.25rem;text-align:center;width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 64em){.form-block.adhoc .title{text-align:left}}@media print, screen and (min-width: 40em){.form-block.adhoc .title{padding-right:1.875rem;padding-left:1.875rem}}.form-block.adhoc .title,.form-block.adhoc .title:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .title:last-child:not(:first-child){float:right}@media print, screen and (min-width: 64em){.form-block.adhoc .title{width:16.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block.adhoc .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block.adhoc .title,.form-block.adhoc .title:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .title:last-child:not(:first-child){float:right}}@media screen and (max-width: 39.99875em){.form-block.adhoc .title{padding-top:0}}.form-block.adhoc .form{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;padding-top:.75rem;padding-right:5px}@media print, screen and (min-width: 40em){.form-block.adhoc .form{padding-right:1.875rem;padding-left:1.875rem}}.form-block.adhoc .form,.form-block.adhoc .form:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.form-block.adhoc .form{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;padding-left:50px !important}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block.adhoc .form{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block.adhoc .form,.form-block.adhoc .form:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){.form-block.adhoc .form{width:83.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){.form-block.adhoc .form{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){.form-block.adhoc .form,.form-block.adhoc .form:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form:last-child:not(:first-child){float:right}}.form-block.adhoc .form .row.adhoc-item,.form-block.adhoc .form .row.output-item{border-bottom:1px solid #d5d5d6;padding-top:.75rem;padding-bottom:.4375rem !important;font-size:1rem;padding-right:60px !important;position:relative;clear:both}.form-block.adhoc .form .row.adhoc-item .options,.form-block.adhoc .form .row.output-item .options{top:2rem}@media print, screen and (min-width: 40em){.form-block.adhoc .form .row.adhoc-item .options,.form-block.adhoc .form .row.output-item .options{top:.75rem}}@media print, screen and (min-width: 64em){.form-block.adhoc .form .row.adhoc-item .options,.form-block.adhoc .form .row.output-item .options{top:0rem}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .row.adhoc-item label,.form-block.adhoc .form .row.output-item label{display:none}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .row.adhoc-item:first-child label,.form-block.adhoc .form .row.output-item:first-child label{display:block}}.form-block.adhoc .form .row.adhoc-item:first-child .options,.form-block.adhoc .form .row.output-item:first-child .options{top:1.25rem}.form-block.adhoc .form .row.adhoc-item:last-child,.form-block.adhoc .form .row.output-item:last-child{border-bottom:none;padding-bottom:0}.form-block.adhoc .form .row.adhoc-item:first-child,.form-block.adhoc .form .row.output-item:first-child{padding-top:0}@media print, screen and (min-width: 64em){.form-block.adhoc .form .row.adhoc-item,.form-block.adhoc .form .row.output-item{border-bottom:none;padding-top:0;padding-bottom:0}}.form-block.adhoc .form .row.adhoc-item+.row.adhoc-item,.form-block.adhoc .form .row.output-item+.row.adhoc-item{margin-top:0}.form-block.adhoc .form .row.adhoc-item .options,.form-block.adhoc .form .row.output-item .options{position:absolute;right:30px;font-size:1.25rem;line-height:2.4375rem;opacity:1}.form-block.adhoc .form .row.adhoc-item .options button,.form-block.adhoc .form .row.output-item .options button{color:#8f1838}.form-block.adhoc .form .row.adhoc-item .options button:hover,.form-block.adhoc .form .row.adhoc-item .options button:active,.form-block.adhoc .form .row.output-item .options button:hover,.form-block.adhoc .form .row.output-item .options button:active{color:#cc2350}.form-block.adhoc .form .row.adhoc-item .options button.gray,.form-block.adhoc .form .row.output-item .options button.gray{color:#ababad;margin-right:5px}@media print, screen and (min-width: 64em){.form-block.adhoc .form .row.adhoc-item .options,.form-block.adhoc .form .row.output-item .options{opacity:0}}.form-block.adhoc .form .row.adhoc-item:hover .options,.form-block.adhoc .form .row.output-item:hover .options{opacity:1;transition:ease all .25s}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.field{width:33.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block.adhoc .form .columns.field{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.field,.form-block.adhoc .form .columns.field:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.field:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.field{width:25%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block.adhoc .form .columns.field{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.field,.form-block.adhoc .form .columns.field:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.field:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.operator{width:25%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block.adhoc .form .columns.operator{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.operator,.form-block.adhoc .form .columns.operator:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.operator:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.operator{width:16.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block.adhoc .form .columns.operator{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.operator,.form-block.adhoc .form .columns.operator:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.operator:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.value{width:41.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.form-block.adhoc .form .columns.value{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.value,.form-block.adhoc .form .columns.value:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.value:last-child:not(:first-child){float:right}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.value{width:58.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media screen and (min-width: 75em) and (min-width: 40em){.form-block.adhoc .form .columns.value{padding-right:1.875rem;padding-left:1.875rem}}@media screen and (min-width: 75em){.form-block.adhoc .form .columns.value,.form-block.adhoc .form .columns.value:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.value:last-child:not(:first-child){float:right}}.form-block.adhoc .form .columns.value .row{margin-left:-5px}@media screen and (max-width: 39.99875em){.form-block.adhoc .form .columns.value .row{margin-left:-10px;margin-right:-15px !important}}.form-block.adhoc .form .columns.value .row .columns{padding-bottom:0 !important}.form-block.adhoc .form .columns.value .row .columns.icon .fa{bottom:.375rem}.form-block.adhoc .form .columns.value.date-range .row .columns{width:41.66667%;float:left;padding-right:.625rem;padding-left:.625rem}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.value.date-range .row .columns{padding-right:1.875rem;padding-left:1.875rem}}.form-block.adhoc .form .columns.value.date-range .row .columns,.form-block.adhoc .form .columns.value.date-range .row .columns:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.value.date-range .row .columns:last-child:not(:first-child){float:right}.form-block.adhoc .form .columns.value.date-range .row .columns.operator{width:16.66667%;float:left;padding-right:.625rem;padding-left:.625rem;text-align:center;line-height:2.4375rem}@media print, screen and (min-width: 40em){.form-block.adhoc .form .columns.value.date-range .row .columns.operator{padding-right:1.875rem;padding-left:1.875rem}}.form-block.adhoc .form .columns.value.date-range .row .columns.operator,.form-block.adhoc .form .columns.value.date-range .row .columns.operator:last-child:not(:first-child){float:left;clear:none}.form-block.adhoc .form .columns.value.date-range .row .columns.operator:last-child:not(:first-child){float:right}.form-block.adhoc .form .columns:last-child:last-child:last-child{float:left}.form-block.adhoc .form .row.output-item{padding-right:90px !important}.form-block.row .columns.form.search-options{position:relative !important}.form-block.row .columns.form.search-options .columns.pad-for-button{padding-right:50px !important}.form-block.row .columns.form.search-options .columns.pad-for-button button.go{top:1px !important;text-align:center !important}.form-block.row .columns.form.search-options .columns.pad-for-button button.go .fa{position:relative;top:-2px;left:auto;right:auto;bottom:auto;color:#8f1838}textarea.tall{min-height:200px}.form-block .form.auto-format .form-error{margin-bottom:.25rem}.error-tip{background:#db2121;height:1rem;width:1rem;text-align:center;border-radius:.5rem;line-height:.875rem;overflow:hidden;float:right;right:-8px;top:50%;position:relative;margin-top:-1.375rem}.error-tip i.fa{color:#fff !important;font-weight:normal;font-size:.5rem !important}.tooltip{font-weight:600;line-height:1.4}.page-content .datepicker-close{margin-right:10px !important}.page-content .input-icon{position:relative}.page-content .input-icon .fa{color:#ababad;position:absolute;left:.625rem;top:.8125rem}.page-content .input-icon input{padding-left:1.75rem}.page-content .input-icon input:focus+.fa,.page-content .input-icon textarea:focus+.fa{color:#cc2350}.file-upload{background:#f5f5f5;margin-left:-1.5rem;padding:1rem 1.5rem}.file-upload input,.file-upload button{display:inline-block;width:auto;margin:0}.file-upload label{margin-bottom:.25rem}.file-upload button.primary,.file-upload .article button.button,.article .file-upload button.button{padding-top:.5rem !important;padding-button:.5rem !important;top:.25rem;position:relative}.shaded .file-upload{padding-top:0;padding-bottom:0}a.icon-link{line-height:1px;display:inline-block;margin:.5rem 0 0 0}.matches-panel{background:#eee;padding:1rem 0 0;margin-bottom:1rem}.matches-panel label{margin-left:1rem;margin-bottom:.125rem}.matches-panel ul{max-height:148px;overflow-y:auto}.matches-panel ul,.matches-panel li{list-style-type:none;margin:0;padding:0}.matches-panel li{border-bottom:1px solid #cdcdcd}.matches-panel li:last-child{border-bottom:0}.matches-panel li a{padding:.375rem 1rem;display:block}.matches-panel li a:hover,.matches-panel li a:active,.matches-panel li a:focus,.matches-panel li a.active{background:#8f1838;color:#fff}.form.h2-check{clear:both !important;padding:.5rem 0 1rem 0 !important;float:none !important}.form.h2-check label{font-size:1.25rem;margin-bottom:0;line-height:normal;text-transform:none}.form.h2-check label input[type=\\\"checkbox\\\"]{position:relative;top:3px}.form p.sample-info{font-weight:600}p.h2-label{font-weight:700;text-transform:uppercase;letter-spacing:2px;font-size:.5625rem;color:#8f1838}.form-block .title p.sample-id{font-size:.875rem}.form-block .title p.sample-id .highlight{color:#8f1838;font-weight:700;display:block;margin-top:.25rem}.form-block .title p.sample-id .highlight button i{color:#8f1838}.form-block .title p.sample-id .highlight button:hover i,.form-block .title p.sample-id .highlight button:active i,.form-block .title p.sample-id .highlight button:focus i{color:#cc2350}.action-space-holder{display:inline-block;width:27px}.sample-request-info table,.sample-request-info p{margin-bottom:.5rem !important}.dashboard .analytics{padding-bottom:0}.analytic-toggler{background:#4f4449;padding-top:.5rem;padding-bottom:.5rem}.analytic-toggler button{color:#fff;font-size:.6875rem;text-transform:uppercase}.analytic-toggler button .fa{font-size:1rem;margin-right:3px;position:relative;top:.125rem}.analytics{padding-top:1.5rem;padding-bottom:1rem;position:relative;background:#4f4449;background:-moz-linear-gradient(top, #4f4449 0%, #65414d 100%);background:-webkit-linear-gradient(top, #4f4449 0%, #65414d 100%);background:linear-gradient(to bottom, #4f4449 0%, #65414d 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f4449', endColorstr='#65414d',GradientType=0 )}.analytics.collapsible{padding-top:0;display:none}.analytics.collapsible.expanded{display:block}.analytics.video{color:#fff}.analytics.video p{font-size:.875rem;opacity:.8}.analytics p.ghost{margin-bottom:0 !important;font-size:.8125rem;color:#fff;opacity:.6;font-style:italic;padding:0 2rem !important}@media screen and (max-width: 39.99875em){.analytics .transparent{padding-bottom:2rem !important}}.analytics>.row>.columns{padding-top:.25rem;padding-bottom:0}.analytics h2{color:#fff;font-family:Raleway;font-weight:300;position:relative;font-size:1.25rem;margin-bottom:1rem}.analytics h2 .ghost{opacity:.7}.analytics h2 .small{font-size:.875rem}.analytics h2 button{font-size:1rem;color:rgba(255,255,255,0.35);position:absolute;right:0;top:50%;margin-top:-.5rem;cursor:pointer}.analytics h2 button:focus,.analytics h2 button:active,.analytics h2 button:hover{color:#fff}.analytics canvas{z-index:4;position:relative}.analytics .chart-box{padding:1rem;background:rgba(255,255,255,0.1);position:relative}@media screen and (max-width: 39.99875em){.analytics .chart-box.has-arrrow{margin-bottom:2rem}}.analytics .chart-box.has-arrow:after{position:absolute;right:-2rem;top:0;bottom:0;background:url(../images/chart-arrow.png) no-repeat left center;content:\\\"\\\";width:2rem}@media screen and (max-width: 39.99875em){.analytics .chart-box.has-arrow:after{position:absolute;right:0;bottom:-2rem;top:auto;left:0;background:url(../images/chart-arrow-down.png) no-repeat top center;content:\\\"\\\";height:2rem;width:auto}}.analytics .chart-box.transparent,.analytics .chart-box.detail{background:transparent;padding-bottom:0}.analytics .row.count .columns{color:#fff;font-size:.75rem;text-align:center;line-height:normal;padding:.5rem 0;text-align:center}.analytics .row.count .columns>a{color:#fff;display:block;border-radius:3rem;border:1px solid #543c44;height:4rem;width:4rem;margin:0 auto .75rem;animation-name:fade-0-to-1;animation-duration:2s}@keyframes fade-0-to-1{0%{opacity:0}100%{opacity:1}}.analytics .row.count .columns .submitted{background:#79686d}.analytics .row.count .columns .received{background:#cc2350}.analytics .row.count .columns .received:focus,.analytics .row.count .columns .received:active,.analytics .row.count .columns .received:hover{background:#d60039}.analytics .row.count .columns .processing{background:#9fd0cb}.analytics .row.count .columns .completed{background:#25d925}.analytics .row.count strong{font-size:1.5rem;line-height:4rem;font-weight:300;font-family:arial;margin:0}.analytics .chart{position:relative}.analytics .chart-title{color:#fff;font-size:.625rem;text-transform:uppercase;font-weight:700;padding:0 2rem 0 0;margin-bottom:.75rem;letter-spacing:4px;position:relative}.analytics .doughnut-inner{animation-name:fade-0-to-1;animation-duration:2s;text-align:center;position:absolute;color:#fff;left:50%;top:50%;z-index:2;margin-left:-50px;margin-top:-40px;height:auto;width:100px}@keyframes fade-0-to-1{0%{opacity:0}100%{opacity:1}}.analytics .doughnut-inner p{line-height:normal;margin:0;text-align:center}.analytics .doughnut-inner strong{display:block;font-size:2.5rem;font-family:Arial, sans-serif;margin-bottom:-.375rem}.analytics .doughnut-inner span{font-size:12px}.analytics .row.legend{margin-bottom:-1rem;position:relative;top:-2rem}@media print, screen and (min-width: 40em){.analytics .row.legend{margin-top:0;top:0;margin-bottom:1.5rem}}.analytics .row.legend .columns{text-align:center}.analytics .row.legend ul{list-style-type:none;margin:1rem auto 0;padding:0}.analytics .row.legend ul li{white-space:nowrap;padding:0 1rem;display:inline;color:#fff;font-size:.75rem}.analytics .row.legend ul li span{display:inline-block;height:.75rem;width:1rem;border:1px solid #543c44;position:relative;margin-right:3px;top:1px}.analytics .split-analytics>.columns:first-child{border-right:1px solid #332c2f}.analytics .split-analytics .chart-box.summary{margin-bottom:1rem}@media print, screen and (min-width: 40em){.analytics .split-analytics .chart-box.transparent{margin-left:-2rem !important;margin-right:-1rem}}@media screen and (max-width: 39.99875em){.analytics .split-analytics .has-arrow:after{position:absolute;right:0;bottom:-2rem;top:auto;left:0;background:url(../images/chart-arrow-down.png) no-repeat top center;content:\\\"\\\";height:2rem;width:auto}}@media print, screen and (min-width: 64em){.analytics .sidebar-description.columns{padding-left:0}}.analytics .sidebar-description.columns p{font-size:.8125rem}#barChartMobile{display:block}#barChart{display:none}@media print, screen and (min-width: 64em){#barChartMobile{display:none}#barChart{display:block}}.chart-box .chart-error{margin-bottom:0}.filter-bar{position:relative;text-align:center;background:#342b2f}button,.button{cursor:pointer}button.filters{position:absolute;right:0;top:0;color:#2e2e2e;white-space:nowrap;line-height:3.125rem;z-index:5;font-style:italic;font-size:.875rem}button.filters .fa{transition:ease all .25s;margin-left:.5rem;color:#ababad;position:relative;top:2px;height:3.125rem;width:3.125rem;background:#55565a;display:inline-block;line-height:3.125rem;font-size:1.5rem}button.filters:hover .fa,button.filters:active .fa,button.filters:focus .fa{background:#2e2e2e}.js-off-canvas-overlay{z-index:40;background:rgba(0,0,0,0.5)}.off-canvas.position-right .key-pair .small-2{position:relative}.off-canvas.position-right .key-pair .small-2 button{display:block;width:100%;text-align:center;color:#cc2350;font-size:1rem;margin-top:28px}.off-canvas.position-right .key-pair .small-2 button:hover,.off-canvas.position-right .key-pair .small-2 button:active,.off-canvas.position-right .key-pair .small-2 button:focus{color:#df436d}.off-canvas.position-right .key-pair .small-5{padding-right:10px}.off-canvas.position-right .accordion .accordion-content .select2-container{height:auto !important}.progress{height:12px;overflow:hidden;margin-bottom:.75rem}.progress.large{height:2rem}.progress-meter{border:1px solid #543c44;-webkit-animation:progress 2s ease;-moz-animation:progress 2s ease;-o-animation:progress 2s ease;animation:progress 2s ease}.received .progress-meter{background:#cc2350}.completed .progress-meter,.negative .progress-meter{background:#25d925}.processing .progress-meter{background:#9fd0cb}.submitted .progress-meter{background:#7d7377}.processing .progress-meter{background:#9fd0cb}.positive .progress-meter{background:#c00}.progress-title{color:#fff;font-size:.5625rem;text-transform:uppercase;font-weight:300;padding:0;margin-bottom:.25rem;letter-spacing:1px}.progress-title strong{letter-spacing:normal;font-size:1rem;font-family:arial, sans-serif}@-webkit-keyframes progress{0%{margin-left:-100%}100%{margin-left:0}}@-moz-keyframes progress{0%{margin-left:-100%}100%{margin-left:0}}@-o-keyframes progress{0%{margin-left:-100%}100%{margin-left:0}}@keyframes progress{0%{margin-left:-100%}100%{margin-left:0}}@media print, screen and (min-width: 40em){.sample-summary .table-summary{padding-right:25px}}@media print, screen and (min-width: 40em){table.fixed{table-layout:fixed !important}}table.table.multi-sample{border-top:1px solid #d5d5d6}table.table.single-sample tbody tr,table.table.single-sample tbody tr td{border:none !important}table.table tbody tr td{vertical-align:middle}table.table tbody tr td a{font-size:0.8125rem !important}@media print, screen and (min-width: 64em){table.table tbody tr td.fixed-large{width:33% !important}table.table tbody tr td.fixed-small{width:20% !important}}.range-to{line-height:24px;display:block;padding:0.25rem 0}.options-label{display:none}.form .row table.table input,.form .row table.table select,.form .row table.table textarea,.form .row table.table .select2-container{margin-bottom:0 !important}table.table input[type='number'].inline,table.table input[type='text'].inline{height:1.75rem !important;line-height:normal !important;margin-bottom:0;padding-top:0 !important;padding-bottom:0 !important}table.table tbody tr:hover .button:disabled,table.table tbody tr:hover .button.disabled,table.table tbody tr:hover .button[disabled],table.table tbody tr:hover button:disabled,table.table tbody tr:hover button.disabled,table.table tbody tr:hover button[disabled]{opacity:0.35 !important}table.table tbody tr:hover .button:disabled:hover,table.table tbody tr:hover .button:disabled:active,table.table tbody tr:hover .button:disabled:focus,table.table tbody tr:hover .button.disabled:hover,table.table tbody tr:hover .button.disabled:active,table.table tbody tr:hover .button.disabled:focus,table.table tbody tr:hover .button[disabled]:hover,table.table tbody tr:hover .button[disabled]:active,table.table tbody tr:hover .button[disabled]:focus,table.table tbody tr:hover button:disabled:hover,table.table tbody tr:hover button:disabled:active,table.table tbody tr:hover button:disabled:focus,table.table tbody tr:hover button.disabled:hover,table.table tbody tr:hover button.disabled:active,table.table tbody tr:hover button.disabled:focus,table.table tbody tr:hover button[disabled]:hover,table.table tbody tr:hover button[disabled]:active,table.table tbody tr:hover button[disabled]:focus{opacity:0.35 !important;color:#8f1838}table.table tbody tr td.row-actions button .fa{color:#8f1838}table.table .row-actions{position:relative;left:0;right:0;border-left:none !important;width:1%;white-space:nowrap}table.table .row-actions button{padding:0;font-size:1.25rem;line-height:1.25rem;margin:0 10px 0 0}@media print, screen and (min-width: 64em){table.table .row-actions button{opacity:0}table.table .row-actions button .fa{color:#8f1838}table.table .row-actions button:hover .fa,table.table .row-actions button:active .fa,table.table .row-actions button:focus .fa{color:#cc2350}}@media print, screen and (min-width: 64em){table.table .row-actions button{margin:2px 0 0 10px}table.table tr:hover td{background:#fbfafa;font-weight:600}table.table tr:hover td a{font-weight:600}table.table tr:hover .row-actions button{opacity:1;transition:ease all 0.25s}table.table tr:hover .row-actions button .fa{color:#8f1838}table.table tr:hover .row-actions button:hover .fa,table.table tr:hover .row-actions button:active .fa,table.table tr:hover .row-actions button:focus .fa{color:#cc2350}table.table.no-drill tr{cursor:default !important}}table.table.readonly th,table.table.readonly td{background:#fff !important;cursor:default}table.table.readonly th:hover,table.table.readonly th:active,table.table.readonly th:focus,table.table.readonly td:hover,table.table.readonly td:active,table.table.readonly td:focus{background:#fff !important;cursor:default}table.table tr.child td{background:#fff !important;cursor:default}table.table tr.child td:hover,table.table tr.child td:active,table.table tr.child td:focus{background:#fff !important;cursor:default}.stacktable.large-only{display:table}.stacktable.small-only{display:none}.st-key{width:auto !important}.st-key .options-label{display:none}@media screen and (max-width: 39.99875em){.st-key .options-label{display:block;font-weight:normal;margin-top:0.375rem;color:#0a0a0a}}.st-val{width:70% !important}@media (max-width: 1025px){table.stacktable tr.group-head.hide-for-large{border-top:2px solid #55565a}.stacktable tr.group-head th.st-head-row{background:#f3f3f3;padding-left:4rem}}@media screen and (max-width: 1025px) and (max-width: 39.99875em){.stacktable tr.group-head th.st-head-row{padding-left:2.625rem !important}}@media (max-width: 1025px){.stacktable tr.group-head th.st-head-row label:after{display:none}table.stacktable tr:first-child{display:none}}@media print and (max-width: 1025px), screen and (max-width: 1025px) and (min-width: 64em){table.stacktable tr:first-child{display:table-row}}@media (max-width: 1025px){table.stacktable tr.group-head .st-head-row{color:#87898e;min-height:1.4375rem;font-size:0.8125rem;letter-spacing:normal;text-align:left;text-transform:none}table.stacktable tr.group-head .st-head-row label{width:1.5rem;position:absolute;left:2rem;top:0.875rem}}@media screen and (max-width: 1025px) and (max-width: 39.99875em){table.stacktable tr.group-head .st-head-row label{left:0.625rem;top:0.625rem}}@media (max-width: 1025px){table.stacktable tr.group-head .st-head-row a{display:inline-block;padding:0 0.5rem;color:#55565a;font-weight:600}table.stacktable tr.group-head .st-head-row a .fa{color:#8f1838;font-size:0.9375rem;display:inline-block;margin-right:2px}}@media screen and (max-width: 1025px) and (max-width: 39.99875em){table.stacktable tr.group-head .st-head-row a:first-of-type{margin-left:-24px}}@media (max-width: 1025px){table.stacktable tr.group-head .st-head-row span.number{font-size:0.9375rem;color:#55565a;margin-right:1rem}.stacktable tr th.st-head-row{border-top:1px solid #2e2e2e;background:#fafafa}.stacktable tr th.st-head-row label{text-align:left}.stacktable tr th.st-head-row label:after{content:'Select the following item.';text-transform:none;letter-spacing:normal;font-size:0.75rem;color:#5f6063;position:relative;left:7px;top:-5px}.stacktable.large-only{display:none}.stacktable.small-only{display:table}.st-val{text-align:left}}table.table{border-collapse:collapse;clear:both}table.table tr th.st-head-row{border-bottom:1px solid #d5d5d6}table.table tr th.st-head-row:after{display:none}table.table thead tr:hover th{background:#fff}table.table thead tr,table.table tbody tr{border-bottom:1px solid #d5d5d6}table.table thead tr td p.note,table.table tbody tr td p.note{margin:0;font-style:italic;color:#0a0a0a !important}table.table thead tr th,table.table thead tr td,table.table tbody tr th,table.table tbody tr td{font-size:0.8125rem;border-left:1px solid #efefef}table.table thead tr th a,table.table thead tr td a,table.table tbody tr th a,table.table tbody tr td a{font-size:0.6875rem}table.table thead tr th .fa,table.table thead tr td .fa,table.table tbody tr th .fa,table.table tbody tr td .fa{color:#55565a}table.table thead tr th:first-child,table.table thead tr td:first-child,table.table tbody tr th:first-child,table.table tbody tr td:first-child{padding-left:2rem;border-left:none !important}table.table thead tr th:last-child,table.table thead tr td:last-child,table.table tbody tr th:last-child,table.table tbody tr td:last-child{padding-right:2rem}@media screen and (max-width: 39.99875em){table.table thead tr th,table.table thead tr td,table.table tbody tr th,table.table tbody tr td{padding:0.625rem !important}}table.table thead tr th.end-group,table.table thead tr td.end-group,table.table tbody tr th.end-group,table.table tbody tr td.end-group{border-right:1px solid #a7a8aa}@media screen and (max-width: 39.99875em){table.table thead tr th.end-group,table.table thead tr td.end-group,table.table tbody tr th.end-group,table.table tbody tr td.end-group{border-right:none}}table.table thead tr td.st-key,table.table tbody tr td.st-key{font-weight:700;text-transform:uppercase;letter-spacing:2px;font-size:0.5625rem;color:#8f1838}table.table thead tr th,table.table tbody tr th{position:relative;font-weight:700;text-transform:uppercase;letter-spacing:2px;font-size:0.5625rem;border-bottom:1px solid #55565a;padding-right:30px}table.table thead tr th input,table.table tbody tr th input{margin-bottom:0}table.table thead tr th:hover:after,table.table tbody tr th:hover:after{opacity:0.75}table.table thead tr th:after,table.table tbody tr th:after{position:absolute;right:8px;top:50%;margin-top:-10px;display:block;font-size:0.8125rem;color:#55565a;opacity:0.35;text-align:center;content:'\\\\f0dc';width:19px;height:19px;font-family:FontAwesome}table.table thead tr th.sorting-none:after,table.table tbody tr th.sorting-none:after{display:none !important}table.table thead tr th.sorting-desc:after,table.table tbody tr th.sorting-desc:after{content:'\\\\f0dd';opacity:1;color:#cc2350}table.table thead tr th.checkbox,table.table tbody tr th.checkbox{width:2rem;padding-top:0;padding-bottom:0}table.table thead tr th.checkbox:after,table.table tbody tr th.checkbox:after{display:none}@media screen and (max-width: 39.99875em){table.table thead tr th span.row-actions,table.table tbody tr th span.row-actions{clear:both;display:block;margin-left:1rem}}table.table tbody tr td .item-options a{display:inline-block;padding:0.5rem 0.75rem 0 0;color:#55565a;font-weight:600;font-size:0.6875rem}table.table tbody tr td .item-options a .fa{color:#8f1838;font-size:0.9375rem;display:inline-block;margin-right:2px}table.table tbody tr:hover td{border-left:1px solid #eae6e2}table.table tbody tr.highlight td{background:#f7f5f4;color:#0a0a0a;font-weight:600;border-left:1px solid #e4ded9}@media screen and (max-width: 39.99875em){table.table tbody tr.highlight td{background:#fff;color:#55565a;font-weight:400;border-left:1px solid #d5d5d6}}table.table tbody tr.group-head{position:relative}table.table tbody tr.group-head td{background:#f3f3f3;color:#87898e;font-weight:700;border-color:#e1e1e1}table.table tbody tr.group-head td.st-key{text-transform:uppercase;letter-spacing:2px;font-size:0.5625rem;color:#8f1838;text-indent:-5000px}table.table tbody tr.group-head td span{color:#e1e1e1}table.table tbody tr.group-head td span.number{font-size:0.9375rem;color:#55565a;margin-right:1rem}table.table tbody tr.group-head td a{display:inline-block;padding:0 0.5rem;color:#55565a;font-weight:600}table.table tbody tr.group-head td a .fa{color:#8f1838;font-size:0.9375rem;display:inline-block;margin-right:2px}@media screen and (max-width: 39.99875em){table.table tbody tr.group-head td a:first-of-type{margin-left:-20px}}table.table input[type='text'],table.table input[type='email'],table.table input[type='num'],table.table input[type='password']{margin-bottom:0}table.table label{margin:3px 0 0 0;padding:0;line-height:normal}table.table label+input{margin-top:0.125rem !important}table.table label input[type='checkbox'],table.table label input[type='radio']{-webkit-appearance:none;background-color:#fff;border:1px solid #cacece;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05);padding:0;height:1.25rem;width:1.25rem;display:inline-block;margin:0;position:relative}table.table label input[type='checkbox']active,table.table label input[type='checkbox']:checked:active,table.table label input[type='radio']active,table.table label input[type='radio']:checked:active{box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px 1px 3px rgba(0,0,0,0.1)}table.table label input[type='checkbox']:checked,table.table label input[type='radio']:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}table.table label input[type='checkbox']:checked:after,table.table label input[type='radio']:checked:after{font-family:FontAwesome;content:'\\\\f00c';position:absolute;top:0;left:2px;color:#cc2350;text-align:center;font-size:0.875rem;height:0.875rem;width:0.875rem}table.table label input[type='radio']{border-radius:0.625rem}table.table label input[type='radio']:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05),inset 15px 10px -12px rgba(255,255,255,0.1)}table.table label input[type='radio']:checked:after{content:'';position:absolute;top:4px;left:4px;background:#cc2350;text-align:center;height:0.625rem;width:0.625rem;border-radius:0.3125rem}.data-options{margin-top:1rem;margin-bottom:1rem}@media print, screen and (min-width: 64em){.data-options{margin-top:0;margin-bottom:0}}.data-options.form{margin-bottom:1rem}.data-options label{line-height:normal !important;margin-bottom:0.5rem !important}@media print, screen and (min-width: 64em){.data-options label{line-height:2.4375rem !important;margin-bottom:0 !important}}.data-options label i.fa{display:none !important}@media print, screen and (min-width: 64em){.data-options label i.fa{display:inline-block !important}}.data-options .fa{color:#ababad;margin-right:2px;position:relative;top:2px}.data-options button{padding:0 20px 0 29px;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;height:2.4375rem;line-height:normal !important;margin:0 !important;position:relative;top:-8px;margin-top:0.75rem}.data-options button .fa{color:#8f1838;font-size:1.25rem;position:absolute;top:2px;left:0;margin-right:3px;height:2.4375rem;width:1.5rem;line-height:2.4375rem;text-align:center;float:left}@media print, screen and (min-width: 40em){.data-options select+.page-action{margin-left:0.25rem !important}}@media print, screen and (min-width: 64em){.data-options{margin-top:1.5rem}}.data-options label{line-height:2.4375rem;margin-bottom:0;white-space:nowrap}@media print, screen and (min-width: 64em){.data-options label{display:inline-block;margin-right:0.5rem}}.data-options select{width:auto}@media screen and (max-width: 39.99875em){.data-options select{display:block;width:100%}}.data-options i.fa{font-size:1.25rem}.search-options{background:#f5f5f5;padding-top:1rem}.search-options .pad-for-button{padding-right:50px !important;position:relative}.search-options button.go{height:2.3125rem;width:2.3125rem;margin:0;border:1px solid #8f1838;text-align:center;padding:0;color:#8f1838;position:absolute;right:0;top:5px;font-size:0.8125rem}.search-options button.go .fa{color:#8f1838;top:0;left:0;width:2.3125rem;text-align:center}@media screen and (max-width: 39.99875em){.search-options button.go{right:5px}}.search-options .search{position:relative}.search-options .search input{padding-left:2rem}.search-options .search .fa{position:absolute;left:0.9375rem;height:2.4375rem;line-height:2.4375rem;top:3px;z-index:8;color:#55565a}.search-options .search:focus+.fa,.search-options .search:active+.fa{color:#cc2350}.search-options.clear{background:none transparent;padding:0}.search-options.clear .search .fa{top:0;left:0.9375rem;height:2.4375rem;line-height:2.4375rem;font-size:1rem}table.mobile-table tbody.mobile-row{border-bottom:2px solid #55565a}table.mobile-table tbody.highlight tr td{background:#f7f5f4;color:#0a0a0a;font-weight:600;border-left:1px solid #e4ded9}table.mobile-table tr{vertical-align:top}table.mobile-table tr td{padding-left:1rem !important}table.mobile-table tr td strong{font-weight:700;text-transform:uppercase;letter-spacing:2px;font-size:0.5625rem;color:#8f1838}@media print, screen and (min-width: 64em){table.mobile-table{display:none}}table.mobile-table .new-data-row,table.mobile-table .group-head{border-top:2px solid #55565a}table.mobile-table .group-head+.new-data-row{border-top:1px solid #e6e6e6}table.desktop-table{display:none}@media print, screen and (min-width: 64em){table.desktop-table{display:table}}table.stacktable{margin-bottom:0}table.stacktable tbody tr.group-head .st-key{display:none}table.stacktable tbody tr.group-head:first-child{display:none}table.stacktable.basic tr.group-head th.st-key,table.stacktable.basic tr.group-head td.st-key{display:table-cell}table.stacktable.basic tr.group-head th.st-head-row{padding-left:0.625rem !important}.report-html table:not([class]){margin:initial;padding:initial}.report-html table:not([class]) thead:not([class]),.report-html table:not([class]) tbody:not([class]){margin:initial;padding:initial}.report-html table:not([class]) thead:not([class]) tr:not([class]),.report-html table:not([class]) tbody:not([class]) tr:not([class]){margin:initial;padding:initial}.report-html table:not([class]) thead:not([class]) tr:not([class]) th:not([class]),.report-html table:not([class]) thead:not([class]) tr:not([class]) td:not([class]),.report-html table:not([class]) tbody:not([class]) tr:not([class]) th:not([class]),.report-html table:not([class]) tbody:not([class]) tr:not([class]) td:not([class]){margin:initial;padding:initial}p.intro{font-size:.875rem;max-width:60rem;margin:0 auto;text-align:center;margin-bottom:.5rem;color:#55565a}.article-standalone{padding-top:1.25rem;padding-bottom:1.25rem}.article-standalone .last-modified{opacity:.85;font-size:.8125rem;font-style:italic}.article-standalone.legal h2{border-bottom:1px solid #0a0a0a;display:inline-block}.article-standalone.legal a{text-decoration:underline;font-weight:700}p.attention{font-weight:600;color:#55565a;position:relative;padding-left:1rem}p.attention:before{font-family:'FontAwesome';color:#db2121;content:\\\"\\\\f05a\\\";font-weight:normal;margin-right:.25rem;margin-left:-1rem}h2+p.attention{margin-top:1rem}.text-block{padding:1.5rem 0}.text-block.secondary{font-size:.8125rem}@media print, screen and (min-width: 64em){.text-block.secondary{font-size:.875rem}}.form-block .article,.article{font-size:.875rem}.form-block .article p,.article p{line-height:1.75;color:#0a0a0a;font-size:.875rem}.form-block .article a,.article a{font-size:.875rem}.form-block .article strong,.article strong{color:#0a0a0a}.form-block .article .callout,.article .callout{background:#f3f0ee;padding:1.5rem}@media screen and (max-width: 39.99875em){.form-block .article .callout,.article .callout{padding:1rem}}.form-block .article h1,.article h1{color:#8f1838;font-size:1.5rem;line-height:1.2}.form-block .article h2,.form-block .article h3,.form-block .article h4,.form-block .article h5,.form-block .article h6,.article h2,.article h3,.article h4,.article h5,.article h6{margin-bottom:0}.form-block .article h2,.article h2{font-size:1.25rem;margin-bottom:.5rem}.form-block .article h3,.article h3{font-size:1rem;color:#8f1838;font-weight:600}.form-block .article h4,.article h4{font-size:.875rem;font-weight:600}.form-block .article h5,.article h5{font-size:.875rem}.form-block .article img,.article img{margin:0 auto;display:block}.form-block .article img.float-left,.form-block .article img.float-right,.article img.float-left,.article img.float-right{float:none;margin-left:0;margin-right:0;min-width:100%;margin-bottom:1rem}@media print, screen and (min-width: 64em){.form-block .article img.float-left,.article img.float-left{float:left;margin:0 1.5rem 1.5rem 0;min-width:0}}@media print, screen and (min-width: 64em){.form-block .article img.float-right,.article img.float-right{float:right;margin:0 0 1.5rem 1.5rem;min-width:0}}.float-right{margin:0 0 1.5rem 1.5rem}.float-left{margin:0 1.5rem 1.5rem 0}.chart-error,.chart-message{text-align:center;color:#fff;font-size:.875rem;line-height:normal;margin-bottom:1.5rem}.chart-error i.fa,.chart-message i.fa{font-size:.75rem}.chart-error span,.chart-message span{display:block;font-size:.75rem}@media print, screen and (min-width: 40em){.chart-message{text-align:left}}p.margin-top{margin-top:1.5rem}.form-block .legal-text{color:#55565a;position:relative}.form-block .legal-text a{margin:0;font-size:.8125rem}.form-block h2+.legal-text{margin-top:1rem}footer{background:#2e2e2e;color:#aeaeae;padding-top:.625rem;z-index:20;position:fixed;bottom:0;right:0;left:3.125rem;font-size:.5625rem}footer span.legal-links{float:none;padding:0 10px 0 0;display:inline-block;margin-top:.25rem;text-align:left}footer span.legal-links a{display:block}@media print, screen and (min-width: 64em){footer span.legal-links{float:right;margin-top:.125rem}footer span.legal-links a{line-height:28px;display:inline-block;padding-left:.5rem;padding-right:.5rem}footer span.legal-links a:first-of-type{border-right:1px solid #616161}}@media screen and (max-width: 39.99875em){footer{display:none}}footer .button,footer button{float:right;font-size:.75rem;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:.625rem}@media print, screen and (min-width: 64em){footer{font-size:.75rem}}footer a{color:#aeaeae}footer a:hover,footer a:focus,footer a:active{color:#fff}footer .iso{display:inline-block;width:auto;font-size:.5625rem;margin-top:.25rem}@media print, screen and (min-width: 40em){footer .iso img{height:.9375rem;width:.9375rem;margin-right:.5rem}}@media print, screen and (min-width: 64em){footer .iso img{height:1.25rem;width:1.25rem;margin-top:.125rem}}@media print, screen and (min-width: 64em){footer .iso img{margin-top:0}}footer img,footer span{float:left}footer img{margin-right:10px}footer span{position:relative;top:-2px}footer span.iso-desktop{display:block}footer span.iso-mobile{display:none}@media screen and (max-width: 39.99875em){footer span.iso-desktop{display:none}footer span.iso-mobile{display:block}}footer .copyright{display:none;clear:both;background:#000;padding-top:.375rem;padding-bottom:.375rem;text-align:center;font-size:.5625rem}.tasks{padding-bottom:1rem;padding-top:1.5rem;background:#fff;background:-moz-linear-gradient(top, #fff 0%, #fff 100%);background:-webkit-linear-gradient(top, #fff 0%, #fff 100%);background:linear-gradient(to bottom, #fff 0%, #fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#fff',GradientType=0 )}.tasks ul{margin-bottom:1.5rem !important}@media print, screen and (min-width: 64em){.tasks ul{margin-bottom:0 !important}}@media screen and (max-width: 39.99875em){.tasks .remediation{width:100%}}@media screen and (min-width: 40em) and (max-width: 63.99875em){.tasks .remediation{width:100%}}.tasks .task-count{list-style-type:none;width:160px;margin:0 auto;text-align:left}@media screen and (max-width: 39.99875em){.tasks .task-count{width:100%;text-align:center}}.tasks .task-count li{font-size:.875rem;padding:0 1rem;animation-name:fade-0-to-1;animation-duration:2s;padding-bottom:.5rem}@keyframes fade-0-to-1{0%{opacity:0}100%{opacity:1}}.tasks>.row .column,.tasks>.row .columns{border-right:1px solid #d5d5d6}.tasks>.row .column:last-child,.tasks>.row .columns:last-child{border-right:none}.tasks>.row .column .columns,.tasks>.row .columns .columns{border-right:none}@media screen and (max-width: 39.99875em){.tasks>.row .column:nth-child(2),.tasks>.row .columns:nth-child(2){border-right:none}}.tasks strong{height:2.5rem;width:2.5rem;line-height:2.5rem;border-radius:1.25rem;text-align:center;color:#fff;display:inline-block;margin-right:5px;font-size:1.25rem;font-family:Arial;display:block;margin:0 auto .25rem}.tasks strong.incomplete,.tasks strong.unassigned{background:#c00}.tasks strong.completed{background:#25d925}.tasks strong.assigned{background:#9fd0cb}@media print, screen and (min-width: 40em){.tasks strong{display:inline-block;margin:0 .25rem 0 0}}.tasks h2{color:#2e2e2e;font-weight:400;font-family:Raleway;font-weight:300;position:relative;font-size:1.25rem;margin-bottom:1rem}@media screen and (max-width: 39.99875em){.tasks h2{font-size:1rem}}.tasks h3{font-size:.675rem;text-transform:uppercase;letter-spacing:2px;color:#8f1838;font-weight:700;margin-bottom:.75rem}.tasks a{font-weight:300;font-size:3rem;color:#2e2e2e;width:6rem;height:6rem;border-radius:3rem;border:1px solid red;display:block;margin:0 auto;line-height:6rem;font-family:arial}@media screen and (min-width: 1024px) and (max-width: 1300px){.tasks strong{display:block;margin:0 auto .25rem}.tasks li{text-align:center;width:100%;font-size:.75rem !important}.task-count{width:auto !important}}@media screen and (max-width: 860px){.tasks strong{display:block;margin:0 auto .25rem}.tasks li{text-align:center;width:100%;font-size:.75rem !important}.task-count{width:auto !important}}.remediation{border-top:1px solid #d5d5d6}.remediation h2{margin-top:1.5rem}@media print, screen and (min-width: 64em){.remediation{border-top:none;margin-top:0}.remediation h2{margin-top:0}}.tasks.dashboard-tasks .row .row .column,.tasks.dashboard-tasks .row .row .columns{border:none;padding-bottom:.75rem;font-size:.75rem}.tasks.dashboard-tasks h2{margin:0 auto;text-align:center}.tasks.dashboard-tasks h3{border-bottom:1px solid #d5d5d6;padding-bottom:.5rem;margin-bottom:.75rem;margin-top:1rem}@media screen and (max-width: 1300px){.tasks.dashboard-tasks strong{display:block;margin-bottom:.25rem;margin:0 auto .25rem auto}.tasks.dashboard-tasks .row .row .column,.tasks.dashboard-tasks .row .row .columns{text-align:center}}.row.map-header .row{margin:0 !important}.fixed-secondary-header{background:#d5d5d6;top:calc($f-block-height + $f-block-height);left:0;right:0;z-index:10}@media print, screen and (min-width: 40em){.fixed-secondary-header{left:3.125rem;position:fixed}.fixed-secondary-header .columns:first-of-type{margin-left:-10px}}.fixed-secondary-header button.page-action,.fixed-secondary-header .button.page-action{vertical-align:top;margin-bottom:0 !important;padding:0 10px 0 40px;margin:0 !important;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;height:3.125rem;line-height:normal !important}.fixed-secondary-header button.page-action:hover i.fa,.fixed-secondary-header button.page-action:active i.fa,.fixed-secondary-header button.page-action:focus i.fa,.fixed-secondary-header .button.page-action:hover i.fa,.fixed-secondary-header .button.page-action:active i.fa,.fixed-secondary-header .button.page-action:focus i.fa{color:#cc2350}.fixed-secondary-header button.page-action i.fa,.fixed-secondary-header .button.page-action i.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;color:#8f1838;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;height:3.125rem;width:1.5rem;line-height:3.125rem;text-align:center;float:left}@media print, screen and (min-width: 40em){.fixed-secondary-header-offset{height:3.125rem}}.map-header{padding-top:0 !important;padding-bottom:0 !important;overflow:visible;height:auto;text-align:center;position:relative;z-index:10;background:#4f4449;background:-moz-linear-gradient(top, #4f4449 0%, #65414d 100%);background:-webkit-linear-gradient(top, #4f4449 0%, #65414d 100%);background:linear-gradient(to bottom, #4f4449 0%, #65414d 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f4449', endColorstr='#65414d',GradientType=0 );background:silver}@media screen and (min-width: 87.1875em){.map-header{height:3.125rem;text-align:left}}.map-header .actions{display:block;width:100%;margin:0}@media print, screen and (min-width: 40em){.map-header .actions{display:inline-block;width:calc(100% - 390px);margin-left:30px;vertical-align:top}}@media print, screen and (min-width: 40em){.map-header .filters{position:relative}}.map-header button.page-action.filter .fa{left:12px !important}.map-header button.page-action,.map-header .button.page-action{padding:0 10px 0 40px;margin:12px 0 !important;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;line-height:normal !important}@media screen and (max-width: 39.99875em){.map-header button.page-action,.map-header .button.page-action{padding-right:10px}.map-header button.page-action i.fa,.map-header .button.page-action i.fa{font-size:1rem !important;left:0 !important}}.map-header button.page-action.filter,.map-header .button.page-action.filter{font-size:0.875rem}@media print, screen and (min-width: 40em){.map-header button.page-action,.map-header .button.page-action{margin-right:-4px !important}}.map-header button.page-action i.fa,.map-header .button.page-action i.fa{color:#8f1838;font-size:1.25rem;position:absolute;top:0;left:10px;margin-right:3px;width:1.5rem;text-align:center;float:left}.map-header button.page-action:hover .fa,.map-header button.page-action:active .fa,.map-header button.page-action:focus .fa,.map-header button.page-action.active .fa,.map-header .button.page-action:hover .fa,.map-header .button.page-action:active .fa,.map-header .button.page-action:focus .fa,.map-header .button.page-action.active .fa{color:#cc2350}.map-header .radio-options{display:inline-block;position:relative;top:6px;margin-left:12px}.map-header .radio-options label{margin-bottom:4px}.map-header input[type='checkbox'].failed-only{top:5px;margin-right:5px}.map-header button.page-action,.map-header .button.page-action{line-height:3.125rem}.map-header h2{margin:0;color:#fff;font-size:1.25rem}@media screen and (max-width: 39.99875em){.analytics.map{height:300px !important}}.map-options button.page-action{height:3.125rem;line-height:3.125rem;margin-right:2px !important;padding:0}.map-options button.page-action .fa{margin-top:-3px !important}.map-options button.page-action .fa{position:static !important}.map-options button.page-action .fa{color:#676767 !important}.map-options button.page-action:hover .fa,.map-options button.page-action:active .fa{color:#cc2350 !important}.map{padding-top:0;padding-bottom:0;overflow:hidden;background:#4f4449;background:-moz-linear-gradient(top, #4f4449 0%, #65414d 100%);background:-webkit-linear-gradient(top, #4f4449 0%, #65414d 100%);background:linear-gradient(to bottom, #4f4449 0%, #65414d 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f4449', endColorstr='#65414d',GradientType=0 )}.map .test-points{list-style-type:none;position:absolute;top:0;left:0;padding:0;margin:0;z-index:7;top:0;left:0}.map .test-points li{cursor:pointer;text-align:center;font-family:Arial, sans-serif;font-weight:400;font-size:1rem;position:absolute}.map .test-points li .historic-pass,.map .test-points li .historic-fail{display:block;height:42px;width:21px;display:block;border-radius:21px 0 0 21px;overflow:hidden;border:1px solid #55565a;-webkit-box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45);-moz-box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45);box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45)}.map .test-points li .historic-pass .historic,.map .test-points li .historic-fail .historic{display:block;height:44px;width:44px;background:#00ee00}.map .test-points li .historic-fail .historic{background:#ee0000}.map .test-points li .icon-holder{border:1px solid #55565a;-webkit-box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45);-moz-box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45);box-shadow:2px 2px 10px 0px rgba(0,0,0,0.45);border-radius:50%;display:block;position:absolute;top:5px;left:5px}.map .test-points li .icon{width:28px;height:28px;line-height:28px;border-radius:14px;background:blue;display:block;border:3px solid #fff}.map .test-points li .icon:after{position:absolute;z-index:8;font-family:FontAwesome;font-size:14px;line-height:21px;left:0;right:0;text-align:center;color:#fff}.map .test-points li .icon.pass{background:#00cc00}.map .test-points li .icon.pass:after{content:'\\\\f00c';line-height:22px}.map .test-points li .icon.fail{background:#cc0000}.map .test-points li .icon.fail:after{content:'\\\\f00d'}.map .test-points li.active:before{display:block;color:#8f1838;content:'\\\\f041';font-size:2.75rem;height:3rem;width:3rem;line-height:3rem;font-family:FontAwesome;position:absolute;z-index:50;left:50%;top:50%;text-align:center;margin-top:-2.625rem;margin-left:-14px}.map .map-padding{position:relative}.map .map-container{background:rgba(255,255,255,0.1);position:absolute;width:100%;overflow:hidden;left:0;right:0}.sidebar{border-left:1px solid #d5d5d6}.sidebar .back{font-size:0.8125rem}.sidebar{background:#f5f5f5}.sidebar ul.sites>li:hover,.sidebar ul.sites>li.is-active{background:#eeebe8;cursor:pointer}.sidebar ul.sites>li.is-point-hovered{background:#d9d1ca !important}.sidebar .map-search{position:relative;background:#f0f0f0;padding:0.75rem 1rem;border-bottom:1px solid #d5d5d6;margin-bottom:0}.sidebar .map-search input{padding-left:2rem}.sidebar .map-search input:focus+.fa{color:#cc2350 !important}.sidebar .map-search .fa{height:2.4375rem;position:absolute;top:0.75rem;left:1.5rem;line-height:2.4375rem}.sidebar .map-search input{margin-bottom:0}.sidebar ul{list-style-type:none;margin:0;padding:0}.sidebar ul ul{min-height:1px;margin-top:0.25rem;line-height:normal}.sidebar ul ul li{min-height:1px;padding:0;margin:0 0 0.25rem 0;border:none;font-size:0.75rem}.sidebar ul ul li .fa{color:#ababad;margin-right:3px}.sidebar li{position:relative;min-height:40px;padding:1rem 1rem 1rem 70px;margin-bottom:0;border-bottom:1px solid #d5d5d6}.sidebar li:last-child{margin-bottom:none;border-bottom:none}.sidebar.map .photo{position:absolute;left:1rem;top:1.5rem;height:40px;width:40px;border-radius:20px;overflow:hidden}.sidebar.map strong{text-transform:uppercase;color:#8f1838;font-size:0.625rem;letter-spacing:4px;font-weight:600}.sidebar.map .description{font-size:0.8125rem;line-height:normal;color:#848487}#heatmapContainer{margin:0 auto}#heatmapContainer img{height:2279px;width:3428px;margin-top:-700px;margin-left:-1000px;max-width:none}.sidebar .site-detail{padding:1.5rem;font-size:0.8125rem}.sidebar .site-detail div.secondary{text-align:left !important;margin:0 0 1rem}.sidebar .site-detail div.secondary ul{text-align:left;max-width:100%;margin-right:auto;margin-left:auto}.sidebar .site-detail div.secondary ul::before,.sidebar .site-detail div.secondary ul::after{display:table;content:' ';flex-basis:0;order:1}.sidebar .site-detail div.secondary ul::after{clear:both}.sidebar .site-detail div.secondary ul li{width:100%;float:left;padding-right:.625rem;padding-left:.625rem;position:relative;text-align:left;padding:0 0.5rem 0 25px !important}@media print, screen and (min-width: 40em){.sidebar .site-detail div.secondary ul li{padding-right:1.875rem;padding-left:1.875rem}}.sidebar .site-detail div.secondary ul li,.sidebar .site-detail div.secondary ul li:last-child:not(:first-child){float:left;clear:none}.sidebar .site-detail div.secondary ul li:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){.sidebar .site-detail div.secondary ul li{width:50%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){.sidebar .site-detail div.secondary ul li{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){.sidebar .site-detail div.secondary ul li,.sidebar .site-detail div.secondary ul li:last-child:not(:first-child){float:left;clear:none}.sidebar .site-detail div.secondary ul li:last-child:not(:first-child){float:right}}.sidebar .site-detail div.secondary ul li .fa{text-align:center;width:20px;position:absolute;top:0;left:0}.sidebar .site-detail div.primary,.sidebar .site-detail .article div.button,.article .sidebar .site-detail div.button{padding-bottom:1.5rem !important;margin:0}.sidebar .site-detail div.primary ul li,.sidebar .site-detail .article div.button ul li,.article .sidebar .site-detail div.button ul li{margin-bottom:0.25rem}.sidebar .site-detail div.primary .chart,.sidebar .site-detail .article div.button .chart,.article .sidebar .site-detail div.button .chart{margin-top:1.25rem}.sidebar .site-detail div.primary .primary-links .columns,.sidebar .site-detail .article div.button .primary-links .columns,.article .sidebar .site-detail div.button .primary-links .columns{text-align:center;line-height:normal}.sidebar .site-detail div.primary .progress,.sidebar .site-detail .article div.button .progress,.article .sidebar .site-detail div.button .progress{height:8px !important;overflow:hidden}.sidebar .site-detail div.primary .progress-title,.sidebar .site-detail .article div.button .progress-title,.article .sidebar .site-detail div.button .progress-title{color:#2e2e2e;font-size:0.625rem;font-weight:600}.sidebar .site-detail div.primary .progress-title strong,.sidebar .site-detail .article div.button .progress-title strong,.article .sidebar .site-detail div.button .progress-title strong{color:#2e2e2e;letter-spacing:normal}.sidebar .site-detail div.primary ul li.site-status strong,.sidebar .site-detail .article div.button ul li.site-status strong,.article .sidebar .site-detail div.button ul li.site-status strong{font-size:0.9375rem !important}.sidebar .site-detail div.primary ul li strong,.sidebar .site-detail .article div.button ul li strong,.article .sidebar .site-detail div.button ul li strong{font-weight:bold;text-transform:none;letter-spacing:normal;color:#2e2e2e}.sidebar .site-detail div.primary ul li.pass .fa,.sidebar .site-detail .article div.button ul li.pass .fa,.article .sidebar .site-detail div.button ul li.pass .fa{color:#00cc00}.sidebar .site-detail div.primary ul li.fail map- .fa,.sidebar .site-detail .article div.button ul li.fail map- .fa,.article .sidebar .site-detail div.button ul li.fail map- .fa{color:#cc0000}.sidebar .site-detail button{display:block;width:100%;margin-bottom:0.75rem}.sidebar .site-detail strong{font-size:0.8125rem;letter-spacing:3px}.sidebar .site-detail .description{margin:0 0 1.5rem}.sidebar .site-detail .fa{color:#ababad;margin-right:3px;font-size:0.9375rem;display:inline-block;width:20px}.sidebar .site-detail ul li{border:none;padding:0;margin:0 0 0.5rem 0;line-height:normal;font-size:0.75rem;min-height:1px}@media screen and (max-width: 39.99875em){.map-header .columns{padding-top:15px}}.map-header .columns .map-options-primary .exit .fa{color:#55565a}.map-header .columns .map-options-primary .exit:hover .fa,.map-header .columns .map-options-primary .exit:active .fa,.map-header .columns .map-options-primary .exit:focus .fa{color:#cc2350}.map-header .columns .map-options-primary .play-toggle .fa{margin-top:-3px}@media screen and (max-width: 39.99875em){.map-header .columns .map-options button.page-action{height:auto !important;line-height:normal !important}}@media print, screen and (min-width: 64em){.map-header .columns .map-options button.page-action{margin-top:0 !important}}.map-header .columns .radio-options label{text-transform:initial}.map-header .columns input[type='radio']+label{margin-bottom:3px}.map-header .columns button.page-action{height:3.125rem !important;line-height:3.125rem !important}@media print, screen and (min-width: 64em){.map-header .columns button.page-action{line-height:3.125rem !important;height:3.125rem !important}}.map-header .columns button.page-action .fa{top:50%;margin-top:-10px}.map-header .columns .separator{width:1px;height:30px;background:#2e2e2e;display:inline-block;position:relative;top:6px;margin-left:6px;margin-right:8px}.point-map{position:relative;overflow:hidden;height:60vh;margin-left:-1.5rem;border:1px solid #55565a}.point-map img{height:2279px;width:3428px;margin-top:-700px;margin-left:-1000px;max-width:none}.point-map.point-map-small{height:60vh}.point-map-header{overflow:visible;background:silver;height:auto;margin-left:-1.5rem;padding:0.75rem 1rem}.point-map-header button.page-action{font-size:1.25rem;margin-bottom:0;margin-right:3px}.point-map-header button.page-action .fa{color:#2e2e2e}.point-map-header button.page-action:hover .fa,.point-map-header button.page-action:active .fa,.point-map-header button.page-action:focus .fa{color:#cc2350}@media screen and (max-width: 39.99875em){.point-map-header,.point-map{margin-left:0;margin-right:5px}}.point-map-form-spacing{margin:1rem 0 0}.map-main{height:300px;overflow:hidden}@media print, screen and (min-width: 40em){.map-main{position:absolute;top:0;bottom:0;height:100vh;overflow:hidden}.map-main img{height:100%}}@media print, screen and (min-width: 40em){.map-main-container{position:fixed;top:0;bottom:0;left:0;right:0}}.map-main-container .map.sidebar{margin-bottom:-3rem}@media print, screen and (min-width: 40em){.map-main-container .map.sidebar{position:absolute;right:0;top:calc(3.125rem * 3);bottom:48px;z-index:10;margin-bottom:0}}@media print, screen and (min-width: 40em){.map-main-container .map.sidebar .sites{max-height:calc(100vh - (3.125rem * 3) - 112px);overflow-y:auto}}@media print, screen and (min-width: 40em){.map-main-container .map.sidebar.detail-sidebar{max-height:calc(100vh - (3.125rem * 3));overflow-y:auto}}@media print, screen and (min-width: 40em){.map-main-container .map.sidebar.detail-sidebar .point-image{margin-left:-30px;margin-right:-30px}}.map-main-container .map.sidebar.detail-sidebar .table-scroller{border-left:1px solid #e2e2e3;border-bottom:1px solid #e2e2e3}.map-main-container .map.sidebar.detail-sidebar .table-scroller table tr:last-child{border-bottom:none}.map-options-container{white-space:nowrap;margin:0 auto}.map-options-container .map-options,.map-options-container .map-options-primary{display:inline-block}.map-options-primary{margin-right:10px;margin-left:10px}@media print, screen and (min-width: 40em){.map-options-primary{margin-left:-10px;float:left}}.map-options-primary button,.map-options-primary .button{padding-left:25px !important;background:none transparent}@media print, screen and (min-width: 40em){.map-options-primary button,.map-options-primary .button{padding-left:40px !important}}.map-options-primary button .fa,.map-options-primary .button .fa{margin-top:3px}.map-options.inputs{position:relative;top:4px}.map-options.inputs input{width:60px;display:inline-block;height:1.75rem;position:relative;top:-4px;margin-right:10px;margin-bottom:0;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important}@media print, screen and (min-width: 40em){.map-options.inputs input{top:2px}}.map-options.inputs label{position:relative;top:1px;margin-right:5px;text-transform:none;font-weight:600}@media print, screen and (min-width: 40em){.map-options.inputs label{top:8px}}.map-options.inputs label,.map-options.inputs input{display:inline-block;line-height:normal}.dropdown-pane.map-point-data{padding:0;background:#fff;font-size:0.8125rem;border:1px solid #c8c8c9}.dropdown-pane.map-point-data .count-offset{margin-right:1rem}.dropdown-pane.map-point-data .tasks{padding-bottom:0;padding-top:1rem}.dropdown-pane.map-point-data .sample-status,.dropdown-pane.map-point-data .sample-status-nodata{text-align:left;font-size:0.8125rem;padding:1rem;margin-bottom:0}.dropdown-pane.map-point-data .sample-status.pass,.dropdown-pane.map-point-data .sample-status.fail,.dropdown-pane.map-point-data .sample-status.warn,.dropdown-pane.map-point-data .sample-status-nodata.pass,.dropdown-pane.map-point-data .sample-status-nodata.fail,.dropdown-pane.map-point-data .sample-status-nodata.warn{padding-left:3.25rem}.dropdown-pane.map-point-data .sample-status.pass:before,.dropdown-pane.map-point-data .sample-status.fail:before,.dropdown-pane.map-point-data .sample-status.warn:before,.dropdown-pane.map-point-data .sample-status-nodata.pass:before,.dropdown-pane.map-point-data .sample-status-nodata.fail:before,.dropdown-pane.map-point-data .sample-status-nodata.warn:before{position:absolute;font-family:FontAwesome;content:'';display:inline-block;left:1.625rem;height:1.5em;width:1.5em;border-radius:50%;line-height:1.5em;color:#fff;text-align:center}.dropdown-pane.map-point-data .sample-status.pass:before,.dropdown-pane.map-point-data .sample-status-nodata.pass:before{background:#25d925;content:'\\\\f00c'}.dropdown-pane.map-point-data .sample-status.fail:before,.dropdown-pane.map-point-data .sample-status.warn:before,.dropdown-pane.map-point-data .sample-status-nodata.fail:before,.dropdown-pane.map-point-data .sample-status-nodata.warn:before{background:#c00;content:'\\\\f00d'}.dropdown-pane.map-point-data .sample-status.warn:before,.dropdown-pane.map-point-data .sample-status-nodata.warn:before{background:#ffae00}.dropdown-pane.map-point-data .sample-status strong,.dropdown-pane.map-point-data .sample-status-nodata strong{height:auto;width:auto;line-height:normal;background:none transparent;color:#000;text-align:left;font-size:0.9375rem;display:block}.dropdown-pane.map-point-data a.more{width:auto;border:none;color:#8f1838;font-size:0.8125rem;padding:0;line-height:normal;margin:1rem 0 0 0;text-align:left;height:auto;font-weight:normal !important}.dropdown-pane.map-point-data a.more:hover,.dropdown-pane.map-point-data a.more:active,.dropdown-pane.map-point-data a.more:focus{color:#cc2350}.dropdown-pane.map-point-data .table-container{padding:0 1rem;max-height:200px;overflow-y:auto}.dropdown-pane.map-point-data .tabs-panel{padding:0}.dropdown-pane.map-point-data table.table thead tr th:first-child,.dropdown-pane.map-point-data table.table thead tr td:first-child,.dropdown-pane.map-point-data table.table tbody tr th:first-child,.dropdown-pane.map-point-data table.table tbody tr td:first-child{padding-left:10px}.dropdown-pane.map-point-data table.table thead tr th:last-child,.dropdown-pane.map-point-data table.table thead tr td:last-child,.dropdown-pane.map-point-data table.table tbody tr th:last-child,.dropdown-pane.map-point-data table.table tbody tr td:last-child{padding-right:10px}@media print, screen and (min-width: 40em){.map.sidebar .tabs .tabs-title>a{padding-left:0.625rem;padding-right:0.625rem}}@media print, screen and (min-width: 64em){.map.sidebar .tabs .tabs-title>a{padding-left:1rem;padding-right:1rem}}.map.sidebar .data-options{margin-top:1rem;margin-bottom:1rem}@media print, screen and (min-width: 64em){.map.sidebar .data-options{margin-top:0;margin-bottom:0}}.map.sidebar .data-options.form{margin-bottom:1rem}.map.sidebar .data-options label,.map.sidebar .data-options button{display:inline-block !important;width:auto}.map.sidebar .data-options label{line-height:normal !important;margin-bottom:0.5rem !important}@media print, screen and (min-width: 64em){.map.sidebar .data-options label{line-height:2.4375rem !important;margin-bottom:0 !important}}.map.sidebar .data-options label i.fa{display:none !important}@media print, screen and (min-width: 64em){.map.sidebar .data-options label i.fa{display:inline-block !important}}.map.sidebar .data-options .fa{color:#ababad;margin-right:2px;position:relative;top:2px}.map.sidebar .data-options button{padding:0 20px 0 29px;text-align:left;color:#2e2e2e;text-transform:none;font-size:0.6875rem;border:none;position:relative;height:2.4375rem;line-height:normal !important;margin:0 !important;position:relative;top:-8px;margin-top:0.75rem}.map.sidebar .data-options button .fa{color:#8f1838;font-size:1.25rem;position:absolute;top:2px;left:0;margin-right:3px;height:2.4375rem;width:1.5rem;line-height:2.4375rem;text-align:center;float:left}@media print, screen and (min-width: 40em){.map.sidebar .data-options select+.page-action{margin-left:0.25rem !important}}@media print, screen and (min-width: 64em){.map.sidebar .data-options{margin-top:1.5rem}}.map.sidebar .data-options label{line-height:2.4375rem;margin-bottom:0;white-space:nowrap}@media print, screen and (min-width: 64em){.map.sidebar .data-options label{display:inline-block;margin-right:0.5rem}}.map.sidebar .data-options select{width:auto}@media screen and (max-width: 39.99875em){.map.sidebar .data-options select{display:block;width:100%}}.map.sidebar .data-options i.fa{font-size:1.25rem}.map.sidebar data-grid{display:block !important}.map.sidebar data-grid .checkbox{border-left:none !important}.map.sidebar data-grid .ag-body-container{margin-top:3px}.play-slider{height:55px;padding:0.5rem 0.5rem 0 6.75rem;background:rgba(0,0,0,0.5)}.play-slider .play-toggle{position:absolute;left:15px;margin:0;margin-top:2px}@media print, screen and (min-width: 40em){.play-slider .play-toggle{left:30px}}.play-slider .play-date{color:#fff;font-family:'Raleway', sans-serif;font-size:0.75rem;font-weight:bold;line-height:normal;padding-top:6px;position:absolute;left:65px;text-shadow:1px 1px #000;text-align:center}@media print, screen and (min-width: 40em){.play-slider .play-date{left:75px}}@media print, screen and (min-width: 40em){.play-slider{position:absolute;z-index:1000;height:auto;bottom:48px;left:3.125rem;top:auto;padding:0.5rem 1rem 0 7.375rem}}@media print, screen and (min-width: 40em){.play-slider{right:41.66667%}}@media print, screen and (min-width: 64em){.play-slider{right:33.333%}}.play-slider .slider{margin-bottom:1.5rem;margin-top:1.125rem;background:black}.request-list-small{margin:0;padding:0;list-style-type:none}.request-list-small li{margin:0;position:relative;padding:.625rem;border-bottom:1px solid #eae6e2;font-size:.8125rem;color:#87898e;font-weight:700}.request-list-small li .request-id{width:calc(100% - 60px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-list-small li .number{font-size:.875rem;color:#55565a}.request-list-small li a{position:absolute;top:1rem;right:1rem;display:inline-block;font-weight:600;white-space:nowrap;line-height:1rem}.request-list-small li a i{font-weight:normal}.form-block ul.two-column-list .title{padding-top:0}ul.two-column-list{list-style-type:none;margin:0;padding:0}ul.two-column-list li{border-bottom:1px solid #d5d5d6;padding-bottom:1rem;padding-top:1rem}ul.two-column-list li:first-child{padding-top:0}ul.two-column-list li:last-child{padding-bottom:0;border-bottom:none}ul.two-column-list .title{padding-left:5px !important;font-size:.875rem;color:#55565a;width:100%;float:left;padding-right:.625rem;padding-left:.625rem;text-align:left}@media print, screen and (min-width: 40em){ul.two-column-list .title{padding-right:1.875rem;padding-left:1.875rem}}ul.two-column-list .title,ul.two-column-list .title:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .title:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){ul.two-column-list .title{width:33.33333%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){ul.two-column-list .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){ul.two-column-list .title,ul.two-column-list .title:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .title:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){ul.two-column-list .title{width:25%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){ul.two-column-list .title{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){ul.two-column-list .title,ul.two-column-list .title:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .title:last-child:not(:first-child){float:right}}ul.two-column-list .title .byline{font-size:.75rem}ul.two-column-list .content{padding-left:5px !important;width:100%;float:left;padding-right:.625rem;padding-left:.625rem;text-align:left}@media print, screen and (min-width: 40em){ul.two-column-list .content{padding-right:1.875rem;padding-left:1.875rem}}ul.two-column-list .content,ul.two-column-list .content:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .content:last-child:not(:first-child){float:right}@media print, screen and (min-width: 40em){ul.two-column-list .content{width:66.66667%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 40em) and (min-width: 40em){ul.two-column-list .content{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 40em){ul.two-column-list .content,ul.two-column-list .content:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .content:last-child:not(:first-child){float:right}}@media print, screen and (min-width: 64em){ul.two-column-list .content{width:75%;float:left;padding-right:.625rem;padding-left:.625rem}}@media print, screen and (min-width: 64em) and (min-width: 40em){ul.two-column-list .content{padding-right:1.875rem;padding-left:1.875rem}}@media print, screen and (min-width: 64em){ul.two-column-list .content,ul.two-column-list .content:last-child:not(:first-child){float:left;clear:none}ul.two-column-list .content:last-child:not(:first-child){float:right}}ul.two-column-list .content ul{margin:0;padding:0;margin-left:1rem}ul.two-column-list .content ul li{padding:0;border:0}ul.two-column-list .content ul li strong.field{color:#8f1838;text-transform:uppercase;font-size:.6875rem}.analytics .select2-container{line-height:normal;box-sizing:border-box;display:inline-block;margin:0 auto 1.5rem;position:relative;vertical-align:middle}.analytics .select2-container *{outline:none}.analytics .select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:36px;user-select:none;-webkit-user-select:none}.analytics .select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics .select2-container .select2-selection--single .select2-selection__clear{position:relative}.analytics .select2-container .select2-search--inline{float:left}.analytics .select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;height:2rem;font-size:1rem;margin-top:5px;padding:0}.analytics .select2-container .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.analytics .select2-results{display:block}.analytics .select2-results__options{list-style:none;margin:0;padding:0}.analytics .select2-results__option[aria-selected]{cursor:pointer}.analytics .select2-container--open .select2-dropdown{left:0;text-align:center}.analytics .select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.analytics .select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.analytics .select2-search--dropdown{display:block;padding:4px}.analytics .select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.analytics .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.analytics .select2-search--dropdown.select2-search--hide{display:none}.analytics .select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.analytics .select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.analytics .select2-container--default .select2-selection--single{background-color:transparent;border:none;border-radius:0}.analytics .select2-container--default .select2-selection--single .select2-selection__rendered{color:#fff;background:#4a3e44;font-size:1.25rem;line-height:36px}.analytics .select2-container--default .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.analytics .select2-container--default .select2-selection__arrow{height:34px;position:absolute;top:1px;right:10px;width:20px}.analytics .select2-container--default .select2-selection__arrow b{border-color:#fff transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #fff transparent}.select2-dropdown.analytics-dropdown{text-align:center;background:#443a3f;border-color:#493f44;font-size:1.25rem}.select2-dropdown.analytics-dropdown .select2-results .select2-results__option{color:#fff;padding-top:2px;padding-bottom:2px}.select2-dropdown.analytics-dropdown .select2-results .select2-results__option[aria-selected=true]{opacity:.65}.sidebar .site-detail,.dropdown-pane.map-point-data{line-height:normal !important}.sidebar .site-detail p,.dropdown-pane.map-point-data p{line-height:normal !important}.sidebar .site-detail .tasks .column,.sidebar .site-detail .tasks .columns,.dropdown-pane.map-point-data .tasks .column,.dropdown-pane.map-point-data .tasks .columns{text-align:center}.sidebar .site-detail .tasks .column.count strong,.sidebar .site-detail .tasks .count.columns strong,.dropdown-pane.map-point-data .tasks .column.count strong,.dropdown-pane.map-point-data .tasks .count.columns strong{letter-spacing:normal;display:block;margin:0 auto .5rem;color:#fff;font-family:arial;font-size:1rem;height:2rem;width:2rem;line-height:2rem}@media print, screen and (min-width: 64em){.sidebar .site-detail .tasks .column.count strong,.sidebar .site-detail .tasks .count.columns strong,.dropdown-pane.map-point-data .tasks .column.count strong,.dropdown-pane.map-point-data .tasks .count.columns strong{height:2.5rem;width:2.5rem;line-height:2.5rem}}.sidebar .site-detail a.more,.dropdown-pane.map-point-data a.more{padding:0 1rem;text-align:center;display:block}.sidebar .site-detail .table-scroller,.dropdown-pane.map-point-data .table-scroller{border-top:1px solid #e6e6e6;max-height:300px;max-width:100%;overflow:auto}.sidebar .site-detail .table-scroller table,.dropdown-pane.map-point-data .table-scroller table{margin-bottom:0}.sidebar .site-detail .table-scroller table thead th,.sidebar .site-detail .table-scroller table tbody th,.dropdown-pane.map-point-data .table-scroller table thead th,.dropdown-pane.map-point-data .table-scroller table tbody th{padding:.75rem 1.75rem .75rem 1rem !important}.sidebar .site-detail .table-scroller table thead td,.sidebar .site-detail .table-scroller table tbody td,.dropdown-pane.map-point-data .table-scroller table thead td,.dropdown-pane.map-point-data .table-scroller table tbody td{padding:.5rem 1rem}.sidebar .site-detail ul.tabs li,.dropdown-pane.map-point-data ul.tabs li{margin-bottom:-1px}.sidebar .site-detail ul.tabs li a,.dropdown-pane.map-point-data ul.tabs li a{font-size:.6875rem;font-family:sans-serif}ul.tabs li{margin-bottom:-1px}ul.tabs li a{font-size:.6875rem;font-family:sans-serif}.tabs-content .form-block{border-top:none}.tabs-content.tight .tabs-panel{padding:0 !important}.callout{font-size:.8125rem;border:none}.callout.alert{font-weight:bold}.callout .fa{font-weight:normal !important}.is-invalid-label{font-weight:bold}input[type='text'].is-invalid-input,input[type='number'].is-invalid-input,input[type='password'].is-invalid-input,input[type='email'].is-invalid-input,textarea.is-invalid-input,textarea-is-invalid-input:not(:focus){background:#fefefe !important}input[type='text'].is-invalid-input:focus,input[type='number'].is-invalid-input:focus,input[type='password'].is-invalid-input:focus,input[type='email'].is-invalid-input:focus,textarea.is-invalid-input:focus,textarea-is-invalid-input:not(:focus):focus{background:#fcfcfc !important;border:1px solid #db2121}input+.form-error,.select2+.form-error,select2+.form-error,textarea+.form-error,.fa.fa-calendar+.form-error,datepicker+.form-error,time-selector+.form-error{margin-top:0;color:#991717;text-transform:none}input+.form-error:before,.select2+.form-error:before,select2+.form-error:before,textarea+.form-error:before,.fa.fa-calendar+.form-error:before,datepicker+.form-error:before,time-selector+.form-error:before{font-family:'FontAwesome';display:inline-block;content:'\\\\f0d8';margin-right:0.25rem;color:#db2121}input+.form-error,.select2+.form-error,selector+.form-error,textarea+.form-error,.fa.fa-calendar+.form-error,datepicker+.form-error,time-selector+.form-error{margin-top:0;color:#991717;text-transform:none}input+.form-error:before,.select2+.form-error:before,selector+.form-error:before,textarea+.form-error:before,.fa.fa-calendar+.form-error:before,datepicker+.form-error:before,time-selector+.form-error:before{font-family:'FontAwesome';display:inline-block;content:'\\\\f0d8';margin-right:0.25rem;color:#db2121}.is-invalid-select2 .select2-selection{border:1px solid red !important}.select2-container{line-height:normal;box-sizing:border-box;display:inline-block;margin:0 0 .25rem 0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:38px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap;margin-bottom:-5px}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;height:2rem;font-size:1rem;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #d5d5d6;border-radius:0;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:900}.select2-dropdown li{line-height:normal !important;padding-top:.25rem;padding-bottom:.25rem}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:0 8px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #d5d5d6;border-radius:0}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:38px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:36px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:not-allowed}.select2-container--default.select2-container--disabled .select2-selection--single:focus,.select2-container--default.select2-container--disabled .select2-selection--single:hover,.select2-container--default.select2-container--disabled .select2-selection--single:active{background-color:#eee !important;cursor:not-allowed}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #d5d5d6;border-radius:0;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#f5f5f5;border:1px solid #d5d5d6;border-radius:0;cursor:default;float:left;font-size:1rem;margin-right:5px;margin-top:4px;padding:0 10px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#c00;cursor:pointer;display:inline-block;font-weight:bold;margin-right:4px;position:relative;top:0;font-size:1.25rem;line-height:1rem}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#f00}.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #55565a 1px;background:#fcfcfc;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:not-allowed}.select2-container--default.select2-container--disabled .select2-selection--multiple:focus,.select2-container--default.select2-container--disabled .select2-selection--multiple:hover,.select2-container--default.select2-container--disabled .select2-selection--multiple:active{background-color:#eee !important;cursor:not-allowed}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-search__field{margin-bottom:0 !important}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #d5d5d6}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;margin:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:none;color:#bbbbbd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#8f1838;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #d5d5d6;border-radius:0;outline:0;background-image:-webkit-linear-gradient(top, white 50%, #eee 100%);background-image:-o-linear-gradient(top, white 50%, #eee 100%);background-image:linear-gradient(to bottom, white 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #8f1838}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:38px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #d5d5d6;border-top-right-radius:4px;border-bottom-right-radius:4px;height:36px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #d5d5d6;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #8f1838}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, white 0%, #eee 50%);background-image:-o-linear-gradient(top, white 0%, #eee 50%);background-image:linear-gradient(to bottom, white 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, white 100%);background-image:-o-linear-gradient(top, #eee 50%, white 100%);background-image:linear-gradient(to bottom, #eee 50%, white 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #d5d5d6;border-radius:0;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #8f1838}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #d5d5d6;border-radius:0;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=\\\"rtl\\\"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #8f1838}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #d5d5d6;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:white;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:white}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#8f1838}.is-invalid-select2+.select2 .select2-selection{border:1px solid #db2121}.is-invalid-select2+.select2 .select2-selection:focus,.is-invalid-select2+.select2 .select2-selection:active,.is-invalid-select2+.select2 .select2-selection:hover{background:#fefefe}.analytics .is-invalid-select2+.select2.select2-container--default .select2-selection--single .select2-selection__rendered,.analytics .is-invalid-select2+select2.select2-container--default .select2-selection--single .select2-selection__rendered{border-bottom:1px solid #db2121 !important}.analytics .is-invalid-select2+.select2.select2-container--default .select2-selection--single .select2-selection__rendered,.analytics .is-invalid-select2+selector.select2-container--default .select2-selection--single .select2-selection__rendered{border-bottom:1px solid #db2121 !important}.analytics .select2.select2-container--disabled .select2-selection .select2-selection__rendered{color:#806c72}.analytics .is-invalid-select2+.select2+.form-error,.analytics .is-invalid-select2+select2+.form-error{margin-top:-1rem;margin-bottom:1.5rem;color:#fff;text-align:left}.analytics .is-invalid-select2+.select2+.form-error,.analytics .is-invalid-select2+selector+.form-error{margin-top:-1rem;margin-bottom:1.5rem;color:#fff;text-align:left}ux-dialog-container.video{padding:0}ux-dialog-container.video ux-dialog,ux-dialog-container.video ux-dialog-body{padding:0;background:none transparent}ux-dialog-container.video .responsive-embed{width:80vw;max-width:100%;margin:0}ux-dialog-container,ux-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0}ux-dialog-body{min-height:1px !important}ux-dialog-body button.large+button{margin-top:-.25rem !important}ux-dialog-overlay{opacity:0}ux-dialog-overlay.active{opacity:1;background:rgba(0,0,0,0.7)}ux-dialog-container{display:block;transition:opacity .2s linear;opacity:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}ux-dialog-container.active{opacity:1}ux-dialog-container>div{padding:30px}ux-dialog-container>div>div{display:block;min-width:300px;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto}ux-dialog-container,ux-dialog-container>div,ux-dialog-container>div>div{outline:0}ux-dialog{display:table;box-shadow:0 0 15px rgba(0,0,0,0.5);border:1px solid rgba(0,0,0,0.2);border-radius:0;padding:3px;min-width:300px;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;background:#fff}ux-dialog>ux-dialog-header{display:block;padding:16px;border-bottom:1px solid #e5e5e5}ux-dialog>ux-dialog-header>button{float:right;border:none;display:block;width:32px;height:32px;background:0 0;font-size:22px;line-height:16px;margin:-14px -16px 0 0;padding:0;cursor:pointer}ux-dialog>ux-dialog-body{display:block;padding:16px}ux-dialog-body h1{font-size:1.75rem !important;text-transform:none;letter-spacing:normal;font-weight:300;max-width:500px;margin:0 0 1.5rem;line-height:normal}@media screen and (max-width: 39.99875em){ux-dialog-body h1{font-size:1.5rem !important}}ux-dialog>ux-dialog-footer{display:block;padding:6px;border-top:1px solid #e5e5e5;text-align:right}ux-dialog>ux-dialog-footer button{color:#333;background-color:#fff;padding:6px 12px;font-size:14px;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid #ccc;border-radius:4px;margin:5px 0 5px 5px}ux-dialog>ux-dialog-footer button:disabled{cursor:default;opacity:.45}ux-dialog>ux-dialog-footer button:hover:enabled{color:#333;background-color:#e6e6e6;border-color:#adadad}.ux-dialog-open{overflow:hidden}.dialog-content table thead tr th,.dialog-content table thead tr td,.dialog-content table tbody tr th,.dialog-content table tbody tr td{padding:.75rem !important}.dialog-content .columns.search{padding-top:0}.dialog-content .columns.icon{position:relative}.dialog-content .columns.icon input{padding-left:2rem}.dialog-content .columns.icon .fa{position:absolute;left:.875rem;bottom:.375rem;z-index:6;color:#ababad;display:block;height:2.4375rem;line-height:2.4375rem}.dialog-content .columns.icon datepicker .fa,.dialog-content .columns.icon .is-invalid-input+.fa{bottom:auto !important;top:1.25rem !important}.dialog-content .columns .select2-container{margin-bottom:.5rem !important}.help-label{font-size:.5625rem;letter-spacing:4px;text-transform:uppercase;display:inline-block;margin-bottom:1rem}.analytics .help-label{color:#fff}.analytics .help-label .fa{color:#cc2350;font-size:1rem;position:relative;top:3px}.form-block .form.help a:hover.help-title,.form-block .form.help a:hover .media-title,.form-block .form.help a:active.help-title,.form-block .form.help a:active .media-title,.form-block .form.help a:focus.help-title,.form-block .form.help a:focus .media-title{color:#8f1838}.form-block .form.help a:hover.help-title:before,.form-block .form.help a:hover .media-title:before,.form-block .form.help a:active.help-title:before,.form-block .form.help a:active .media-title:before,.form-block .form.help a:focus.help-title:before,.form-block .form.help a:focus .media-title:before{color:#cc2350}.faq .accordion-item:first-child .accordion-title{border-top:none}.faq .accordion-title{font-size:1rem;padding:.75rem 0 .5rem 1.5rem;border:none;border-top:1px solid #d5d5d6;border-bottom:none !important}.faq .accordion-title:hover,.faq .accordion-title:active,.faq .accordion-title:focus{background:none transparent}.faq .accordion-title:before{font-family:\\\"FontAwesome\\\";content:\\\"\\\\f078\\\";right:auto;left:0;font-size:.625rem}.faq .accordion{border:none}.faq .accordion-content{border:none}.faq .accordion-content:last-child{border-bottom:none}.faq .accordion-content p:last-child{margin-bottom:none}.faq .is-active .accordion-title:before{font-family:\\\"FontAwesome\\\";content:\\\"\\\\f077 \\\";right:auto;left:0}.page-content{position:relative;min-height:90vh}@-webkit-keyframes MessageSlideIn{0%{right:-320px}50%{right:10px}100%{right:10px}}@-moz-keyframes MessageSlideIn{0%{right:-320px}50%{right:10px}100%{opacity:10px}}@-o-keyframes MessageSlideIn{0%{right:-320px}50%{right:10px}100%{right:10px}}@keyframes MessageSlideIn{0%{right:-320px}50%{right:10px}100%{right:10px}}@-webkit-keyframes MessageSlideOut{0%{right:10px}50%{right:-320px}100%{right:-320px}}@-moz-keyframes MessageSlideOut{0%{right:10px}50%{right:-320px}100%{right:-320px}}@-o-keyframes MessageSlideOut{0%{right:10px}50%{right:-320px}100%{right:-320px}}@keyframes MessageSlideOut{0%{right:10px}50%{right:-320px}100%{right:-320px}}@-webkit-keyframes LoaderFadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes LoaderFadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes LoaderFadeIn{0%{opacity:0}100%{opacity:1}}@keyframes LoaderFadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes LoaderFadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes LoaderFadeOut{0%{opacity:1}100%{opacity:0}}@-o-keyframes LoaderFadeOut{0%{opacity:1}100%{opacity:0}}@keyframes LoaderFadeOut{0%{opacity:1}100%{opacity:0}}.overlay-message{position:fixed;bottom:60px;right:-320px;width:300px;z-index:90;border:1px solid #414244;background:#fff;padding:1rem;text-align:center}@media screen and (max-width: 39.99875em){.overlay-message{bottom:65px}}.overlay-message button{font-size:.875rem;margin:0;position:absolute;right:0;top:0;padding:.5rem}.overlay-message button i.fa{color:#aaaaac !important}.overlay-message button:hover i.fa,.overlay-message button:active i.fa,.overlay-message button:focus i.fa{color:#6b6c6f !important}.overlay-message.slide-in{-webkit-animation:MessageSlideIn forwards 1s;-moz-animation:MessageSlideIn forwards 1s;-o-animation:MessageSlideIn forwards 1s;animation:MessageSlideIn forwards 1s}.overlay-message.slide-out{-webkit-animation:MessageSlideOut forwards 1s;-moz-animation:MessageSlideOut forwards 1s;-o-animation:MessageSlideOut forwards 1s;animation:MessageSlideOut forwards 1s}.overlay-message .message{font-weight:600;font-size:.875rem}.overlay-message .message.success i.fa{color:#0c0}.overlay-message .message.error i.fa{color:#db2121}.overlay-message .message i.fa{display:block;font-size:2.25rem;margin-bottom:.5rem}.message.form-top{background:#8f1838;text-align:center;font-weight:600;padding:.75rem 2rem;font-size:.875rem;color:#fff}.message.form-top button.link{color:#fff;text-decoration:underline;padding:0 .75rem;font-weight:600}.message.form-top i.fa{display:inline-block;margin-right:5px;color:#fff;margin-left:.75rem}.loader{-webkit-animation:LoaderFadeIn forwards 250ms;-moz-animation:LoaderFadeIn forwards 250ms;-o-animation:LoaderFadeIn forwards 250ms;animation:LoaderFadeIn forwards 250ms;position:absolute;top:0;right:0;bottom:-48px;left:0;background:rgba(255,255,255,0.7);z-index:15}.loader:after{display:block;height:50px;width:50px;position:fixed;top:50%;left:50%;margin-left:-25px;margin-top:-25px;z-index:16;content:'';background:url(../images/loader.gif) no-repeat center center}@media screen and (max-width: 39.99875em){.loader:after{margin-top:-60px}}.loader.fade-out{-webkit-animation:LoaderFadeOut forwards 250ms;-moz-animation:LoaderFadeOut forwards 250ms;-o-animation:LoaderFadeOut forwards 250ms;animation:LoaderFadeOut forwards 250ms}.top-bar{z-index:20}header{z-index:30}.off-canvas{z-index:50 !important}data-grid{display:none;background:#fefefe;line-height:1.5}data-grid div{outline:none;-webkit-appearance:none}data-grid input[type=\\\"text\\\"],data-grid input[type=\\\"password\\\"],data-grid input[type=\\\"date\\\"],data-grid input[type=\\\"email\\\"],data-grid input[type=\\\"password\\\"],data-grid input[type=\\\"search\\\"],data-grid input[type=\\\"tel\\\"],data-grid input[type=\\\"number\\\"]{height:1.75rem !important;line-height:normal !important;margin-bottom:0;padding-top:0 !important;padding-bottom:0 !important}@media print, screen and (min-width: 40em){data-grid{display:block !important}}data-grid img{vertical-align:middle;border:0}data-grid .ag-row,data-grid .ag-header-row{display:inline-flex;width:100%;font-size:.8125rem}data-grid .ag-row a,data-grid .ag-header-row a{font-weight:bold;color:#8f1838}data-grid .ag-row a:hover,data-grid .ag-header-row a:hover{color:#cc2350}data-grid .ag-column-moving .ag-cell{transition:left 0.2s}data-grid .ag-row-group-cell-ghost{color:#e5e5e5}data-grid .ag-row{border-bottom:1px solid #d5d5d6}data-grid .ag-row .fa.fa-check{color:#2e2e2e;font-size:.9375rem}data-grid .ag-row:hover{background:#fbfafa;font-weight:600}data-grid .ag-row:hover a{font-weight:600}data-grid .ag-row:hover .ag-cell.row-actions button,data-grid .ag-row:hover .ag-cell.row-actions .button{opacity:1}data-grid .ag-row:hover button:disabled,data-grid .ag-row:hover button.disabled,data-grid .ag-row:hover button[disabled],data-grid .ag-row:hover .button:disabled,data-grid .ag-row:hover .button.disabled,data-grid .ag-row:hover .button[disabled]{opacity:.35 !important}data-grid .ag-sort-order{color:#55565a;opacity:.5}data-grid .ag-header-icon{position:absolute;top:.6875rem;right:2px;z-index:120}data-grid .ag-cell,data-grid .ag-row>.group-head{font-size:.8125rem;border-left:1px solid #efefef}data-grid .ag-cell>div,data-grid .ag-row>.group-head>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}data-grid .ag-cell.row-actions>div,data-grid .ag-cell.no-truncate>div,data-grid .ag-row>.group-head.row-actions>div,data-grid .ag-row>.group-head.no-truncate>div{overflow:visible;text-overflow:none}data-grid .ag-cell a,data-grid .ag-row>.group-head a{font-weight:400}data-grid .ag-cell.row-actions,data-grid .ag-row>.group-head.row-actions{white-space:nowrap;border-left:none}data-grid .ag-cell.row-actions button,data-grid .ag-cell.row-actions .button,data-grid .ag-row>.group-head.row-actions button,data-grid .ag-row>.group-head.row-actions .button{margin:2px 0 0 10px;opacity:0;transition:ease all .25s}data-grid .ag-cell.row-actions button:disabled,data-grid .ag-cell.row-actions button.disabled,data-grid .ag-cell.row-actions button[disabled],data-grid .ag-cell.row-actions .button:disabled,data-grid .ag-cell.row-actions .button.disabled,data-grid .ag-cell.row-actions .button[disabled],data-grid .ag-row>.group-head.row-actions button:disabled,data-grid .ag-row>.group-head.row-actions button.disabled,data-grid .ag-row>.group-head.row-actions button[disabled],data-grid .ag-row>.group-head.row-actions .button:disabled,data-grid .ag-row>.group-head.row-actions .button.disabled,data-grid .ag-row>.group-head.row-actions .button[disabled]{cursor:not-allowed}data-grid .ag-cell.row-actions button:disabled:hover i.fa,data-grid .ag-cell.row-actions button:disabled:active i.fa,data-grid .ag-cell.row-actions button:disabled:focus i.fa,data-grid .ag-cell.row-actions button.disabled:hover i.fa,data-grid .ag-cell.row-actions button.disabled:active i.fa,data-grid .ag-cell.row-actions button.disabled:focus i.fa,data-grid .ag-cell.row-actions button[disabled]:hover i.fa,data-grid .ag-cell.row-actions button[disabled]:active i.fa,data-grid .ag-cell.row-actions button[disabled]:focus i.fa,data-grid .ag-cell.row-actions .button:disabled:hover i.fa,data-grid .ag-cell.row-actions .button:disabled:active i.fa,data-grid .ag-cell.row-actions .button:disabled:focus i.fa,data-grid .ag-cell.row-actions .button.disabled:hover i.fa,data-grid .ag-cell.row-actions .button.disabled:active i.fa,data-grid .ag-cell.row-actions .button.disabled:focus i.fa,data-grid .ag-cell.row-actions .button[disabled]:hover i.fa,data-grid .ag-cell.row-actions .button[disabled]:active i.fa,data-grid .ag-cell.row-actions .button[disabled]:focus i.fa,data-grid .ag-row>.group-head.row-actions button:disabled:hover i.fa,data-grid .ag-row>.group-head.row-actions button:disabled:active i.fa,data-grid .ag-row>.group-head.row-actions button:disabled:focus i.fa,data-grid .ag-row>.group-head.row-actions button.disabled:hover i.fa,data-grid .ag-row>.group-head.row-actions button.disabled:active i.fa,data-grid .ag-row>.group-head.row-actions button.disabled:focus i.fa,data-grid .ag-row>.group-head.row-actions button[disabled]:hover i.fa,data-grid .ag-row>.group-head.row-actions button[disabled]:active i.fa,data-grid .ag-row>.group-head.row-actions button[disabled]:focus i.fa,data-grid .ag-row>.group-head.row-actions .button:disabled:hover i.fa,data-grid .ag-row>.group-head.row-actions .button:disabled:active i.fa,data-grid .ag-row>.group-head.row-actions .button:disabled:focus i.fa,data-grid .ag-row>.group-head.row-actions .button.disabled:hover i.fa,data-grid .ag-row>.group-head.row-actions .button.disabled:active i.fa,data-grid .ag-row>.group-head.row-actions .button.disabled:focus i.fa,data-grid .ag-row>.group-head.row-actions .button[disabled]:hover i.fa,data-grid .ag-row>.group-head.row-actions .button[disabled]:active i.fa,data-grid .ag-row>.group-head.row-actions .button[disabled]:focus i.fa{color:#8f1838 !important}data-grid .ag-cell.row-actions:hover i.fa,data-grid .ag-cell.row-actions:active i.fa,data-grid .ag-cell.row-actions:focus i.fa,data-grid .ag-row>.group-head.row-actions:hover i.fa,data-grid .ag-row>.group-head.row-actions:active i.fa,data-grid .ag-row>.group-head.row-actions:focus i.fa{color:#cc2350 !important}data-grid .ag-cell i.fa,data-grid .ag-row>.group-head i.fa{font-size:1.25rem;color:#8f1838}data-grid .ag-cell .item-options a,data-grid .ag-row>.group-head .item-options a{display:inline-block;padding:.5rem .75rem 0 0;color:#55565a;font-weight:600;font-size:.6875rem}data-grid .ag-cell .item-options a .fa,data-grid .ag-row>.group-head .item-options a .fa{color:#8f1838;font-size:.9375rem;display:inline-block;margin-right:2px}data-grid .ag-cell.medium-text-center,data-grid .ag-cell.text-center,data-grid .ag-cell.large-text-center,data-grid .ag-header-cell.medium-text-center,data-grid .ag-header-cell.text-center,data-grid .ag-header-cell.large-text-center{justify-content:center}data-grid .ag-cell.checkbox,data-grid .ag-header-cell.checkbox{text-align:left !important;justify-content:left;line-height:normal}data-grid label input[type=\\\"checkbox\\\"]{-webkit-appearance:none;background-color:#fff;border:1px solid #cacece;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05);padding:0;height:1.25rem;width:1.25rem;display:inline-block;margin:0;top:3px;position:relative}data-grid label input[type=\\\"checkbox\\\"]:checked{background-color:#fafafa;border:1px solid #adb8c0;box-shadow:0 1px 2px rgba(0,0,0,0.05),inset 0px -15px 10px -12px rgba(0,0,0,0.05)}data-grid label input[type=\\\"checkbox\\\"]:checked:after{font-family:FontAwesome;content:\\\"\\\\f00c\\\";position:absolute;top:0;left:2px;color:#cc2350;text-align:center;font-size:.875rem;height:.875rem;width:.875rem}data-grid .ag-row-group-expanded{background:#f3f3f3}data-grid .ag-cell,data-grid .ag-header-cell{display:flex;align-items:center;padding:1rem 0 1rem 1rem;padding-left:10px}data-grid .ag-cell:first-child,data-grid .ag-header-cell:first-child{padding-left:2rem}data-grid .ag-cell.disabled-cell{background:#e3e3e3}data-grid .ag-cell.disabled-cell.ag-cell-range-selected:not(.ag-cell-disable-selection){background:#a7b1c4}data-grid .ag-cell.ag-cell-range-selected.error-cell{background:#ffdbe1}data-grid .ag-header-container .ag-header-cell,data-grid .ag-pinned-left-header .ag-header-cell,data-grid .ag-pinned-right-header .ag-header-cell{background:#fff;font-size:.5625rem;letter-spacing:2px;border-bottom:1px solid #55565a;font-weight:700;text-transform:uppercase;color:#8f1838;padding-right:5px}data-grid .ag-header-container .ag-header-cell .fa,data-grid .ag-pinned-left-header .ag-header-cell .fa,data-grid .ag-pinned-right-header .ag-header-cell .fa{color:#55565a}data-grid .ag-cell-highlight{background:#cc2350;font-weight:600}data-grid .ag-cell-highlight-animation{transition:border 1s}data-grid .ag-header-cell-moving .ag-header-cell-label{opacity:0.0}data-grid .ag-overlay-loading-wrapper{background-color:rgba(255,255,255,0.5)}data-grid .ag-overlay-loading-center{background-color:#ffffff;border:1px solid darkgray;border-radius:10px;padding:10px;color:black}data-grid .ag-row-selected{background-color:#f7f5f4;color:#0a0a0a;font-weight:600}data-grid .ag-row-selected:hover,data-grid .ag-row-selected:active,data-grid .ag-row-selected:focus{background-color:#f7f5f4;color:#0a0a0a;font-weight:600}data-grid .ag-cell-range-selected:not(.ag-cell-disable-selection){border:1px solid #d6dff3;background:#f3f7ff}data-grid .ag-segmentation-cell-disable-selection{border:none;background:#d5d5d6;width:100%;height:100%;position:absolute;left:0;top:0}data-grid .ag-header-cell-resize{height:45px;position:absolute;right:-10px;width:20px;z-index:100}.ag-row.error-row{border:1px solid #db2121;border-left:none;border-right:none;margin-top:-1px}.ag-row.error-row .ag-cell{background:#fdf4f4;border-left:1px solid #f9d9d9}.ag-row.error-row .ag-cell.row-actions{border-left:none}.ag-row.error-row:hover .ag-cell{background:#fdefef;border-left:1px solid #f9d5d5}.ag-row.error-row:hover .ag-cell.row-actions{border-left:none}.ag-cell.error-cell{background:#fdf4f4}.media-thumbnail{max-width:100px}.ag-header-cell-label{min-width:22px}.ag-header-cell{border-bottom:1px solid #55565a !important}data-grid .group-head{white-space:nowrap;line-height:60px;padding-left:30px;color:#87898e;font-weight:700}data-grid .group-head .number{font-size:.9375rem;color:#55565a;margin-right:1rem}.ag-header-cell .ag-cell-label-container{padding-left:0}.ag-header-cell.ag-header-cell-sortable .ag-cell-label-container{padding-right:0}.ag-header-cell.ag-header-cell-sortable .ag-cell-label-container.ag-header-cell-sorted-asc,.ag-header-cell.ag-header-cell-sortable .ag-cell-label-container.ag-header-cell-sorted-des{padding-right:6px !important}.ag-header-cell span.ag-header-cell-text{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-right:0;padding-right:0}data-grid .ag-header-container .ag-header-cell{border-left:1px solid #efefef;padding-right:3px}data-grid .ag-header-container .ag-header-cell.row-actions{border-left:none}data-grid .ag-header-cell label input[type=\\\"checkbox\\\"]{top:-3px !important}data-grid .row-icon,table .row-icon{font-size:1rem;width:30px;text-align:center}data-grid .row-icon i.fa,table .row-icon i.fa{color:#8f1838}data-grid .ag-body-viewport{margin-top:0}data-grid .ag-pinned-right-header+.ag-header-viewport .ag-header-cell:first-child,data-grid .ag-pinned-left-header+.ag-header-viewport .ag-header-cell:first-child{padding-left:2rem}data-grid .ag-pinned-left-cols-viewport+.ag-body-viewport-wrapper .ag-cell:first-child,data-grid .ag-pinned-right-cols-viewport+.ag-body-viewport-wrapper .ag-cell:first-child{padding-left:2rem}.ag-icon-asc,.ag-icon-desc{margin-right:8px}.ag-font-style{user-select:text}.ag-tooltip{color:#fff;background:#000;padding:5px 10px;border:solid 1px #ccc;font-size:13px}.datepicker table{width:275px}.datepicker table thead th{cursor:default}.datepicker table thead th{border-bottom:1px solid #56575a;color:#8f1838;letter-spacing:2px}.datepicker table thead th.dow{letter-spacing:normal}.datepicker table thead th:after,.datepicker table tbody td:after{display:none}.datepicker table thead tr:hover th,.datepicker table tbody tr:hover td{background:#fff;border-left:none;border-right:none}.datepicker table thead th.next,.datepicker table thead th.prev{color:#56575a;font-weight:700;font-size:.75rem}.datepicker table tbody td .month.active,.datepicker table tbody td .year.active{color:#fff !important}.datepicker table tbody td.day:hover,.datepicker table tbody td .month:hover,.datepicker table tbody td .year:hover{transition:ease all .1s;background:#cc2350 !important;color:#fff}.datepicker table tbody tr:hover td.old,.datepicker table tbody tr:hover td.new{background:#fbfbfb}.datepicker table thead th.dow{font-weight:700}.datepicker.dropdown-menu{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker td{font-size:.75rem;font-weight:600}.datepicker td.active.day,.datepicker td.active.year{background:#8f1838;color:#fff !important}.datepicker td.active.day:hover,.datepicker td.active.year:hover{background:#cc2350}.datepicker td.old,.datepicker td.new{color:#999;font-weight:400;background:#fbfbfb}.datepicker td span.active{background:#b32345;color:white}.datepicker td span.active:hover{color:black}.datepicker td .nonMilitaryTime{font-size:.75rem}.datepicker th.active.day,.datepicker th.active.year{background:#b32345}.datepicker th span.active{background:#b32345}.datepicker-close{right:-10px;background:none transparent !important;color:#878787 !important;line-height:normal !important;font-weight:700;font-size:1rem !important}span.hour.nonMilitaryTime:hover{background:#eee}.editor-toolbar.fullscreen,.CodeMirror-fullscreen,.editor-preview-side{z-index:9000 !important}.editor-preview-side{font-size:.8125rem}.editor-preview-side h1{color:#8f1838;font-size:1.5rem;line-height:1.2}.editor-preview-side h2{font-size:1.25rem;font-weight:normal}.editor-preview-side h3{font-size:1rem;color:#8f1838;font-weight:600}.editor-preview-side h4{font-size:.875rem;font-weight:600}.editor-preview-side h5,.editor-preview-side h6{font-size:.875rem}.editor-preview-side h2,.editor-preview-side h3,.editor-preview-side h4,.editor-preview-side h5,.editor-preview-side h6{margin-bottom:0}.editor-preview-side blockquote{background:#f3f0ee;padding:1.5rem;border:none}.CodeMirror{background:#fafafa;font-size:.8125rem}.CodeMirror .cm-spell-error{background:url(../images/simplemde-spelling.png) repeat-x bottom left !important;padding-bottom:1px}.editor-preview,.editor-preview-side{background:#fff}@media screen and (max-width: 39.99875em){.editor-preview,.editor-preview-side{display:none}.CodeMirror-sided{width:100% !important}}.editor-toolbar,.CodeMirror,.editor-toolbar a,.CodeMirror .CodeMirror-code .cm-comment{border-radius:0}.ag-theme-fsns{--ag-header-foreground-color: #8f1838;--ag-header-background-color: #fff}.ag-theme-fsns .row-actions-flex{height:100%;padding:0;margin:0;display:flex;flex-wrap:wrap;column-gap:1em;justify-content:center;align-items:center}.ag-theme-fsns .tp-pass{background-color:#25d925}.ag-theme-fsns .tp-fail{background-color:#c00}.ag-theme-fsns .tp-incomplete{background-color:#9fd0cb}.ag-theme-fsns .ag-root-wrapper{border:none !important}.ag-theme-fsns .ag-header-cell{background:#fff;font-size:0.5625rem;letter-spacing:2px;border-bottom:1px solid #55565a;font-weight:700;text-transform:uppercase;color:#8f1838;padding-right:5px}.ag-theme-fsns .ag-header-cell .fa{color:#55565a}.ag-theme-fsns .ag-cell,.ag-theme-fsns .ag-header-cell{display:flex;align-items:center;padding-left:10px}.ag-theme-fsns .ag-cell,.ag-theme-fsns .ag-row>.group-head{font-size:0.8125rem;border-left:1px solid #efefef}.ag-theme-fsns .ag-cell>div,.ag-theme-fsns .ag-row>.group-head>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ag-theme-fsns .ag-cell.row-actions>div,.ag-theme-fsns .ag-cell.no-truncate>div,.ag-theme-fsns .ag-row>.group-head.row-actions>div,.ag-theme-fsns .ag-row>.group-head.no-truncate>div{overflow:visible;text-overflow:none}.ag-theme-fsns .ag-cell a,.ag-theme-fsns .ag-row>.group-head a{font-weight:400}.ag-theme-fsns .ag-cell.row-actions,.ag-theme-fsns .ag-row>.group-head.row-actions{white-space:nowrap;border-left:none}.ag-theme-fsns .ag-cell.row-actions button,.ag-theme-fsns .ag-cell.row-actions .button,.ag-theme-fsns .ag-row>.group-head.row-actions button,.ag-theme-fsns .ag-row>.group-head.row-actions .button{margin:2px 0 0 10px;opacity:0;transition:ease all 0.25s}.ag-theme-fsns .ag-cell.row-actions button:disabled,.ag-theme-fsns .ag-cell.row-actions button.disabled,.ag-theme-fsns .ag-cell.row-actions button[disabled],.ag-theme-fsns .ag-cell.row-actions .button:disabled,.ag-theme-fsns .ag-cell.row-actions .button.disabled,.ag-theme-fsns .ag-cell.row-actions .button[disabled],.ag-theme-fsns .ag-row>.group-head.row-actions button:disabled,.ag-theme-fsns .ag-row>.group-head.row-actions button.disabled,.ag-theme-fsns .ag-row>.group-head.row-actions button[disabled],.ag-theme-fsns .ag-row>.group-head.row-actions .button:disabled,.ag-theme-fsns .ag-row>.group-head.row-actions .button.disabled,.ag-theme-fsns .ag-row>.group-head.row-actions .button[disabled]{cursor:not-allowed}.ag-theme-fsns .ag-cell.row-actions button:disabled:hover i.fa,.ag-theme-fsns .ag-cell.row-actions button:disabled:active i.fa,.ag-theme-fsns .ag-cell.row-actions button:disabled:focus i.fa,.ag-theme-fsns .ag-cell.row-actions button.disabled:hover i.fa,.ag-theme-fsns .ag-cell.row-actions button.disabled:active i.fa,.ag-theme-fsns .ag-cell.row-actions button.disabled:focus i.fa,.ag-theme-fsns .ag-cell.row-actions button[disabled]:hover i.fa,.ag-theme-fsns .ag-cell.row-actions button[disabled]:active i.fa,.ag-theme-fsns .ag-cell.row-actions button[disabled]:focus i.fa,.ag-theme-fsns .ag-cell.row-actions .button:disabled:hover i.fa,.ag-theme-fsns .ag-cell.row-actions .button:disabled:active i.fa,.ag-theme-fsns .ag-cell.row-actions .button:disabled:focus i.fa,.ag-theme-fsns .ag-cell.row-actions .button.disabled:hover i.fa,.ag-theme-fsns .ag-cell.row-actions .button.disabled:active i.fa,.ag-theme-fsns .ag-cell.row-actions .button.disabled:focus i.fa,.ag-theme-fsns .ag-cell.row-actions .button[disabled]:hover i.fa,.ag-theme-fsns .ag-cell.row-actions .button[disabled]:active i.fa,.ag-theme-fsns .ag-cell.row-actions .button[disabled]:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button:disabled:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button:disabled:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button:disabled:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button.disabled:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button.disabled:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button.disabled:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button[disabled]:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button[disabled]:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions button[disabled]:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button:disabled:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button:disabled:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button:disabled:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button.disabled:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button.disabled:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button.disabled:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button[disabled]:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button[disabled]:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions .button[disabled]:focus i.fa{color:#8f1838 !important}.ag-theme-fsns .ag-cell.row-actions:hover i.fa,.ag-theme-fsns .ag-cell.row-actions:active i.fa,.ag-theme-fsns .ag-cell.row-actions:focus i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions:hover i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions:active i.fa,.ag-theme-fsns .ag-row>.group-head.row-actions:focus i.fa{color:#cc2350 !important}.ag-theme-fsns .ag-cell i.fa,.ag-theme-fsns .ag-row>.group-head i.fa{font-size:1.25rem;color:#8f1838}.ag-theme-fsns .ag-cell .item-options a,.ag-theme-fsns .ag-row>.group-head .item-options a{display:inline-block;padding:0.5rem 0.75rem 0 0;color:#55565a;font-weight:600;font-size:0.6875rem}.ag-theme-fsns .ag-cell .item-options a .fa,.ag-theme-fsns .ag-row>.group-head .item-options a .fa{color:#8f1838;font-size:0.9375rem;display:inline-block;margin-right:2px}.ag-theme-fsns .ag-row{border-bottom:1px solid #d5d5d6}.ag-theme-fsns .ag-row .fa.fa-check{color:#2e2e2e;font-size:0.9375rem}.ag-theme-fsns .ag-row:hover{background:#fbfafa;font-weight:600}.ag-theme-fsns .ag-row:hover a{font-weight:600}.ag-theme-fsns .ag-row:hover .ag-cell.row-actions button,.ag-theme-fsns .ag-row:hover .ag-cell.row-actions .button{opacity:1}.ag-theme-fsns .ag-row:hover button:disabled,.ag-theme-fsns .ag-row:hover button.disabled,.ag-theme-fsns .ag-row:hover button[disabled],.ag-theme-fsns .ag-row:hover .button:disabled,.ag-theme-fsns .ag-row:hover .button.disabled,.ag-theme-fsns .ag-row:hover .button[disabled]{opacity:0.35 !important}.ag-theme-fsns .ag-cell.disabled-cell{background:#e3e3e3}.ag-theme-fsns .ag-cell.disabled-cell.ag-cell-range-selected:not(.ag-cell-disable-selection){background:#a7b1c4}.ag-theme-fsns .ag-cell.invalid-cell{background:#fdf4f4}.ag-theme-fsns .ag-cell.segmentation-parent-cell{border-left-color:#8f1838}.ag-theme-fsns .ag-cell.segmentation-child-cell{border-right-color:#8f1838}.ag-theme-fsns-text-wrap.ag-theme-fsns .ag-cell>div{white-space:initial;overflow:initial;text-overflow:initial}.ag-theme-fsns-text-wrap.ag-theme-fsns .ag-cell{align-items:normal !important}a{transition:ease all 0.25s !important}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import Attribute from './attribute';\r\n\r\nexport function buildAttributeQuery(attributes: Attribute[], parameterName) {\r\n if (!attributes || !attributes.length)\r\n return '';\r\n\r\n var validIndex = 0;\r\n var query = '';\r\n\r\n for (var i = 0; i < attributes.length; i++) {\r\n let attribute = attributes[i];\r\n if (!attribute.name || !attribute.value)\r\n continue;\r\n\r\n query += `${parameterName}[${validIndex}].name=${attribute.name}&${parameterName}[${validIndex}].value=${attribute.value}&`;\r\n validIndex++;\r\n }\r\n\r\n return query;\r\n}\r\n","enum GenerateTasksDistributionMethod {\r\n WEEK_BASED = 'WeekBasedSequential',\r\n SEQUENTIAL = 'Sequential',\r\n MONTHLY_SWAB = 'MonthlySwab',\r\n WEEKLY_SWAB = 'WeeklySwab',\r\n DAILY_SWAB = 'DailySwab',\r\n}\r\n\r\nexport default GenerateTasksDistributionMethod;\r\n","enum PlanType {\r\n DISCRETIONARY = 1,\r\n SCHEDULED = 2,\r\n RISK_BASED_PRIORITY = 3,\r\n ADHOC = 4\r\n}\r\n\r\nexport default PlanType;\r\n","import { ColDef, ColGroupDef, GridOptions, ValueGetterParams } from 'ag-grid-community';\r\nimport { AgMarkedCellRenderer } from 'infrastructure/ag-grid/ag-cell-renderers';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport {\r\n agFormatBoolean,\r\n agFormatDateAndTimeToLocale,\r\n} from 'infrastructure/ag-grid/ag-value-formatters';\r\nimport { GlobalMessageApproval } from './global-message';\r\n\r\nconst colDefs: (ColDef | ColGroupDef)[] = [\r\n { headerName: 'Title', field: 'title' },\r\n {\r\n headerName: 'Message',\r\n field: 'message',\r\n flex: 3,\r\n wrapText: true,\r\n autoHeight: true,\r\n cellRenderer: AgMarkedCellRenderer,\r\n },\r\n {\r\n headerName: 'Published',\r\n field: 'publishDateTime',\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n },\r\n { headerName: 'Created', field: 'createDateTime', valueFormatter: agFormatDateAndTimeToLocale },\r\n { headerName: 'Active', field: 'isActive', valueFormatter: agFormatBoolean },\r\n { headerName: 'Modified By', field: 'modifiedByUser' },\r\n {\r\n headerName: 'First Approved By',\r\n valueGetter: (params: ValueGetterParams) => {\r\n const { approvals }: { approvals: GlobalMessageApproval[] } = params.data;\r\n if (approvals.length === 0) return;\r\n\r\n return approvals[0].approvedByUser;\r\n },\r\n },\r\n {\r\n headerName: 'First Approved On',\r\n valueGetter: (params: ValueGetterParams) => {\r\n const { approvals }: { approvals: GlobalMessageApproval[] } = params.data;\r\n if (approvals.length === 0) return;\r\n\r\n return approvals[0].approvalDateTime;\r\n },\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n },\r\n {\r\n headerName: 'Second Approved By',\r\n valueGetter: (params: ValueGetterParams) => {\r\n const { approvals }: { approvals: GlobalMessageApproval[] } = params.data;\r\n if (approvals.length !== 2) return;\r\n\r\n return approvals[1].approvedByUser;\r\n },\r\n },\r\n {\r\n headerName: 'Second Approved On',\r\n valueGetter: (params: ValueGetterParams) => {\r\n const { approvals }: { approvals: GlobalMessageApproval[] } = params.data;\r\n if (approvals.length !== 2) return;\r\n\r\n return approvals[1].approvalDateTime;\r\n },\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n },\r\n {\r\n suppressMenu: true,\r\n cellClass: 'medium-text-right',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n valueGetter: (params: ValueGetterParams) => {\r\n const { id, isActive } = params.data;\r\n\r\n return {\r\n id,\r\n isActive,\r\n };\r\n },\r\n cellRenderer: (params) => {\r\n const { id, isActive } = params.value;\r\n if (!isActive) {\r\n return '
';\r\n }\r\n\r\n return `\r\n
\r\n \r\n \r\n \r\n
\r\n `;\r\n },\r\n },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: colDefs,\r\n};\r\n\r\nconst globalMessageGridOptions: GridOptions = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('global-message-admin-grid')\r\n .build();\r\n\r\nexport { globalMessageGridOptions };\r\n","import { BaseQueryFilter } from 'infrastructure/components/query-filters/base-query-filter';\r\nimport {\r\n CollectionTypeQuery,\r\n CollectionTypesQueryFilters,\r\n} from 'infrastructure/components/query-filters/collection-types-query-filter';\r\nimport {\r\n ConfirmationTestingQuery,\r\n ConfirmationTestingQueryFilters,\r\n} from 'infrastructure/components/query-filters/confirmation-testing-query-filter';\r\nimport {\r\n DateRangeQuery,\r\n DateRangeQueryFilter,\r\n} from 'infrastructure/components/query-filters/date-range-query-filter';\r\nimport { QueryFiltered } from 'infrastructure/components/query-filters/query-filtered';\r\nimport {\r\n RecordStatusQuery,\r\n RecordStatusQueryFilters,\r\n} from 'infrastructure/components/query-filters/record-status-query-filter';\r\nimport CollectionType from 'location-testing/collection-type';\r\nimport TestMethodGroup from 'location-testing/test-method-group';\r\nimport RecordStatus from 'record-status';\r\n\r\nexport interface MapDashboardQuery {\r\n id: number;\r\n dateRangeOption?: string;\r\n targetStartDate: string;\r\n targetEndDate: string;\r\n dateRangeOverride?: boolean;\r\n planIds: number[];\r\n recordStatus: RecordStatus;\r\n pointId?: number;\r\n pointRooms: string[];\r\n pointTypes: string[];\r\n pointZones: string[];\r\n testMethodIds: number[];\r\n taskAssigneeIds: number[];\r\n collectionTypes: CollectionType[];\r\n remediationRootCauseIds: number[];\r\n testMethodGroup?: TestMethodGroup;\r\n confirmationTestValues?: string[];\r\n}\r\n\r\n/* eslint-disable brace-style */\r\nexport class MapDashboardQueryFilters\r\n extends BaseQueryFilter\r\n implements QueryFiltered\r\n{\r\n private _filterCaption: string;\r\n id: number;\r\n dateRangeQueryFilters: DateRangeQueryFilter;\r\n recordStatusQueryFilters: RecordStatusQueryFilters;\r\n collectionTypesQueryFilters: CollectionTypesQueryFilters;\r\n confirmationTestingQueryFilters: ConfirmationTestingQueryFilters;\r\n\r\n pointRooms: string[];\r\n pointTypes: string[];\r\n pointZones: string[];\r\n testMethodIds: number[];\r\n taskAssigneeIds: number[];\r\n planIds: number[];\r\n pointId: number;\r\n remediationRootCauseIds: number[];\r\n\r\n constructor() {\r\n super();\r\n\r\n this.dateRangeQueryFilters = new DateRangeQueryFilter();\r\n this.recordStatusQueryFilters = new RecordStatusQueryFilters();\r\n this.collectionTypesQueryFilters = new CollectionTypesQueryFilters();\r\n this.confirmationTestingQueryFilters = new ConfirmationTestingQueryFilters();\r\n\r\n this.pointRooms = [];\r\n this.pointTypes = [];\r\n this.pointZones = [];\r\n this.testMethodIds = [];\r\n this.taskAssigneeIds = [];\r\n this.planIds = [];\r\n this.remediationRootCauseIds = [];\r\n this.id = 0;\r\n }\r\n\r\n public get count(): number {\r\n return (\r\n 0 +\r\n this.recordStatusQueryFilters.count +\r\n this.collectionTypesQueryFilters.count +\r\n this.confirmationTestingQueryFilters.count +\r\n Number(!!(this.testMethodIds && this.testMethodIds.length)) +\r\n Number(!!(this.pointRooms && this.pointRooms.length)) +\r\n Number(!!(this.pointZones && this.pointZones.length)) +\r\n Number(!!(this.pointTypes && this.pointTypes.length)) +\r\n Number(!!(this.taskAssigneeIds && this.taskAssigneeIds.length)) +\r\n Number(!!(this.planIds && this.planIds.length)) +\r\n Number(!!(this.remediationRootCauseIds && this.remediationRootCauseIds.length))\r\n );\r\n }\r\n\r\n public get filterCaption(): string {\r\n return this._filterCaption;\r\n }\r\n\r\n reset(): void {\r\n this.dateRangeQueryFilters.reset();\r\n this.recordStatusQueryFilters.reset();\r\n this.collectionTypesQueryFilters.reset();\r\n this.confirmationTestingQueryFilters.reset();\r\n\r\n this.pointRooms = [];\r\n this.pointTypes = [];\r\n this.pointZones = [];\r\n this.testMethodIds = [];\r\n this.taskAssigneeIds = [];\r\n this.planIds = [];\r\n this.remediationRootCauseIds = [];\r\n }\r\n\r\n getQueryParams(): MapDashboardQuery {\r\n return {\r\n ...this.dateRangeQueryFilters.getQueryParams(),\r\n ...this.recordStatusQueryFilters.getQueryParams(),\r\n ...this.collectionTypesQueryFilters.getQueryParams(),\r\n ...this.confirmationTestingQueryFilters.getQueryParams(),\r\n testMethodIds: this.testMethodIds,\r\n pointRooms: this.pointRooms,\r\n pointZones: this.pointZones,\r\n pointTypes: this.pointTypes,\r\n taskAssigneeIds: this.taskAssigneeIds,\r\n planIds: this.planIds,\r\n id: this.id,\r\n pointId: this.pointId,\r\n remediationRootCauseIds: this.remediationRootCauseIds,\r\n };\r\n }\r\n\r\n setFilterValues(params: MapDashboardQuery): void {\r\n const dateRangeQuery: DateRangeQuery = {\r\n dateRangeOption: params.dateRangeOption,\r\n targetStartDate: params.targetStartDate,\r\n targetEndDate: params.targetEndDate,\r\n dateRangeOverride: params.dateRangeOverride,\r\n };\r\n const recordStatusQuery: RecordStatusQuery = { recordStatus: params.recordStatus };\r\n\r\n const collectionTypeQuery: CollectionTypeQuery = {\r\n collectionTypes: params.collectionTypes,\r\n };\r\n const confirmationTestingQuery: ConfirmationTestingQuery = {\r\n testMethodGroup: params.testMethodGroup,\r\n confirmationTestValues: params.confirmationTestValues,\r\n };\r\n\r\n const {\r\n pointRooms,\r\n pointTypes,\r\n pointZones,\r\n testMethodIds,\r\n taskAssigneeIds,\r\n planIds,\r\n remediationRootCauseIds,\r\n id,\r\n } = { ...params };\r\n\r\n this.dateRangeQueryFilters.setFilterValues(dateRangeQuery);\r\n this.recordStatusQueryFilters.setFilterValues(recordStatusQuery);\r\n this.collectionTypesQueryFilters.setFilterValues(collectionTypeQuery);\r\n this.confirmationTestingQueryFilters.setFilterValues(confirmationTestingQuery);\r\n\r\n super.setQueryFilteredValues(\r\n {\r\n pointRooms,\r\n pointTypes,\r\n pointZones,\r\n testMethodIds: super.formatSingleOrMultipleOrNothingArray(testMethodIds),\r\n taskAssigneeIds: taskAssigneeIds?.map(Number),\r\n planIds: planIds?.map(Number),\r\n remediationRootCauseIds: super.formatSingleOrMultipleOrNothingArray(\r\n remediationRootCauseIds,\r\n ),\r\n id,\r\n },\r\n this,\r\n );\r\n\r\n this._filterCaption = super.getFilterCaption(\r\n this.count,\r\n 'Collection Date Range',\r\n this.dateRangeQueryFilters.dateRangeCaption,\r\n );\r\n }\r\n}\r\n","import { GridStack } from 'gridstack';\r\nimport { buildGridOptions } from './grid-config';\r\nimport PromiseQueue from 'infrastructure/promise-queue';\r\nimport { WidgetLayoutItem } from './widget-layout-item';\r\nimport { autoinject, PLATFORM } from 'aurelia-framework';\r\nimport Logger from 'infrastructure/logger';\r\nimport SecurityService from 'security/security-service';\r\nimport DashboardSettingsService, { DashboardSettings } from './dashboard-settings-service';\r\nimport { createDefaultLayoutItems } from './widget-registry';\r\n\r\n@autoinject\r\nexport class DashboardWidgets {\r\n private readonly VM_READY_TIMEOUT_MS = 5000;\r\n\r\n gridEl: HTMLElement;\r\n layoutItems: WidgetLayoutItem[] = createDefaultLayoutItems();\r\n\r\n private gridStack: GridStack;\r\n private queue: PromiseQueue;\r\n private settings: DashboardSettings;\r\n private settingsPromise: Promise;\r\n\r\n constructor(\r\n private securityService: SecurityService,\r\n private settingsService: DashboardSettingsService,\r\n private logger: Logger,\r\n ) {\r\n this.logger.name = 'dashboard-widgets';\r\n\r\n // Filter out widgets the user doesn't have access to view. The org's application-module\r\n // flag takes precedence over the user's own permission grant, since per-user view\r\n // permissions aren't reliably configured by admins in practice.\r\n this.layoutItems = this.layoutItems.filter(\r\n (item) =>\r\n (!item.requiredApplicationModule ||\r\n this.securityService.hasApplicationModule(item.requiredApplicationModule)) &&\r\n (!item.requiredPermission ||\r\n this.securityService.hasPermission(item.requiredPermission)),\r\n );\r\n\r\n this.layoutItems.forEach((item) => {\r\n item.vmReady = new Promise((resolve) => (item.vmReadyResolve = resolve));\r\n item.reload = () => this.loadWidget(item);\r\n });\r\n }\r\n\r\n activate() {\r\n this.settingsPromise = this.settingsService.getSettings(); // fire, don't await — page paints while this fetches\r\n }\r\n\r\n async attached() {\r\n this.gridEl.querySelectorAll('.grid-stack-item').forEach((el, i) => {\r\n const item = this.layoutItems[i];\r\n el.setAttribute('gs-id', item.id);\r\n el.setAttribute('gs-x', String(item.x));\r\n el.setAttribute('gs-y', String(item.y));\r\n el.setAttribute('gs-w', String(item.w));\r\n el.setAttribute('gs-h', String(item.h));\r\n });\r\n\r\n this.gridStack = GridStack.init(buildGridOptions(), this.gridEl);\r\n\r\n this.settings = await this.settingsPromise;\r\n this.queue = new PromiseQueue(this.settings.maxConcurrentWidgetLoads);\r\n this.layoutItems.forEach((item) => this.loadWidget(item));\r\n }\r\n\r\n detached() {\r\n this.gridStack?.destroy(false);\r\n }\r\n\r\n loadWidget(item: WidgetLayoutItem) {\r\n item.state = 'pending';\r\n const enqueuedAt = performance.now();\r\n let startedAt = enqueuedAt;\r\n this.queue\r\n .enqueue(async () => {\r\n startedAt = performance.now();\r\n item.state = 'loading';\r\n await this.vmReadyOrTimeout(item);\r\n await item.contentVm.loadData();\r\n })\r\n .then(() => {\r\n item.state = 'loaded';\r\n if (this.settings.enableWidgetLoadTimingLogs) {\r\n this.logger.info(\r\n 'Dashboard widget loaded.',\r\n this.loadTimings(item, enqueuedAt, startedAt),\r\n );\r\n }\r\n })\r\n .catch((error) => {\r\n item.state = 'error';\r\n this.logger.error(\r\n `Error loading dashboard widget '${item.id}'.`,\r\n error,\r\n this.loadTimings(item, enqueuedAt, startedAt),\r\n );\r\n });\r\n }\r\n\r\n retryWidget(item: WidgetLayoutItem) {\r\n this.loadWidget(item);\r\n }\r\n\r\n private vmReadyOrTimeout(item: WidgetLayoutItem): Promise {\r\n return new Promise((resolve, reject) => {\r\n const timeoutId = setTimeout(\r\n () =>\r\n reject(\r\n new Error(\r\n `Widget '${item.id}' (module: ${item.moduleId}) did not compose within ${this.VM_READY_TIMEOUT_MS}ms`,\r\n ),\r\n ),\r\n this.VM_READY_TIMEOUT_MS,\r\n );\r\n\r\n item.vmReady.then(() => {\r\n clearTimeout(timeoutId);\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n private loadTimings(item: WidgetLayoutItem, enqueuedAt: number, startedAt: number) {\r\n return {\r\n widgetId: item.id,\r\n queueWaitMs: Math.round(startedAt - enqueuedAt),\r\n loadMs: Math.round(performance.now() - startedAt),\r\n };\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".dashboard-widgets .grid-stack-item-content{border:1px solid #d5d5d6;background-color:#fff}.dashboard-widgets .grid-stack-item-content>widget-shell{display:flex;flex-direction:column;height:100%}.dashboard-widgets .widget-shell-header{display:flex;align-items:center;justify-content:space-between;gap:0.5rem;padding:0.5rem 0.75rem;border-bottom:1px solid #d5d5d6}.dashboard-widgets .widget-shell-header .widget-shell-title-group{flex:1;min-width:0}.dashboard-widgets .widget-shell-header .widget-shell-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-bottom:0;font-family:'Raleway';font-weight:300;font-size:1.2rem;color:#2e2e2e}.dashboard-widgets .widget-shell-header .widget-shell-filter-caption{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:0.75rem;color:#55565a}.dashboard-widgets .widget-shell-header .widget-shell-filter{border:none;background:transparent;color:#55565a;font-size:1rem;padding:0.25rem;border-radius:3px;cursor:pointer}.dashboard-widgets .widget-shell-header .widget-shell-filter:hover{color:#2e2e2e;background-color:#d5d5d6}.dashboard-widgets .widget-shell-header .widget-shell-filter.is-open{color:#cc2350;background-color:rgba(204,35,80,0.1)}.dashboard-widgets .widget-shell-body{position:relative;flex:1;min-height:0;overflow-y:auto}.dashboard-widgets .widget-shell-loading,.dashboard-widgets .widget-shell-error{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.5rem;background-color:#fff}.dashboard-widgets .widget-shell-error .button{margin-bottom:0;font-size:0.8125rem;padding:0.5em 1.25em}.dashboard-widgets .widget-shell-content{height:100%;padding:0.5rem 0.75rem}.dashboard-widgets .tasks .row .column{border-right:none;padding-bottom:0.75rem;font-size:0.75rem}.dashboard-widgets .tasks .view-all-link{align-self:center;display:inline-flex;align-items:center;gap:0.35rem;width:auto;height:auto;margin:0 0 0.5rem;padding:0.35rem 0.75rem;border:1px solid #8f1838;border-radius:4px;background-color:transparent;color:#8f1838;font-weight:bold;font-size:0.75rem;line-height:normal;font-family:inherit;text-decoration:none;transition:background-color 0.15s ease-in-out,\\r color 0.15s ease-in-out}.dashboard-widgets .tasks .view-all-link:hover{background-color:#8f1838;color:#fff}.dashboard-widgets .tasks .view-all-link .fa{font-size:0.8125rem}.dashboard-widgets .tasks .widget-search{display:flex;gap:0.35rem;margin-bottom:0.5rem;flex-shrink:0}.dashboard-widgets .tasks .widget-search input[type='text']{flex:1;width:auto;height:auto;padding:0.4rem 0.6rem;margin:0;font-size:0.8125rem;border-radius:4px}.dashboard-widgets .tasks .widget-search button{flex-shrink:0;width:auto;height:auto;margin:0;padding:0.4rem 0.75rem;border:1px solid #8f1838;border-radius:4px;background-color:transparent;color:#8f1838;cursor:pointer;transition:background-color 0.15s ease-in-out,\\r color 0.15s ease-in-out}.dashboard-widgets .tasks .widget-search button:hover{background-color:#8f1838;color:#fff}.dashboard-widgets .tasks .widget-search button.clear{border-color:transparent;color:#55565a}.dashboard-widgets .tasks .widget-search button.clear:hover{background-color:#d5d5d6;color:#2e2e2e}.dashboard-widgets .widget-compact .tasks strong{display:block;margin:0 auto 0.25rem}.dashboard-widgets .widget-compact .tasks .row .column{text-align:center}.dashboard-widgets .widget-filter-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;background-color:#fff;padding:0.75rem;overflow-y:auto}.dashboard-widgets .widget-filter-panel .widget-filter-panel-controls{flex:1}.dashboard-widgets .widget-filter-panel .widget-filter-panel-actions{display:flex;gap:0.5rem;justify-content:flex-end}.dashboard-widgets .widget-filter-panel .widget-filter-panel-actions .button{margin-bottom:0}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class WidgetFilterPanel {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) open = false;\r\n @bindable apply: () => void;\r\n @bindable reset: () => void;\r\n // Optional — widgets that don't need to gate Apply just omit this binding (defaults to true).\r\n @bindable canApply = true;\r\n\r\n applyFilters() {\r\n this.open = false;\r\n this.apply();\r\n }\r\n\r\n resetFilters() {\r\n this.open = false;\r\n this.reset();\r\n }\r\n\r\n cancel() {\r\n this.open = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\nimport { WidgetState } from './widget-state';\r\nimport { WidgetDisplayMode } from './widget-display-mode';\r\n\r\nexport class WidgetShell {\r\n @bindable header: string;\r\n @bindable filterCaption: string;\r\n @bindable state: WidgetState;\r\n @bindable retry: () => void;\r\n @bindable filterable = false;\r\n @bindable compactMaxWidth: number;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) filtersOpen = false;\r\n\r\n bodyEl: HTMLElement;\r\n displayMode: WidgetDisplayMode = 'full';\r\n private readonly defaultCompactMaxWidth = 640;\r\n private resizeObserver: ResizeObserver;\r\n\r\n attached() {\r\n this.resizeObserver = new ResizeObserver((entries) =>\r\n this.updateDisplayMode(entries[0].contentRect.width),\r\n );\r\n this.resizeObserver.observe(this.bodyEl);\r\n }\r\n\r\n detached() {\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n toggleFilters() {\r\n this.filtersOpen = !this.filtersOpen;\r\n }\r\n\r\n private updateDisplayMode(width: number) {\r\n const threshold = this.compactMaxWidth ?? this.defaultCompactMaxWidth;\r\n this.displayMode = width < threshold ? 'compact' : 'full';\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport RemediationService from 'location-testing/remediations/remediation-service';\r\nimport { RemediationCounts } from 'location-testing/remediations/remediation-counts';\r\nimport { RemediationSummary } from 'location-testing/remediations/remediation-summary';\r\nimport Organization from 'organizations/organization';\r\nimport RecordStatus from 'record-status';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\ntype RemediationStatFilter = 'notStarted' | 'inProgress' | 'completed' | 'rejected';\r\n\r\n// Reviewed is a permanently closed state for the assigned user (approval user's sign-off,\r\n// nothing left to act on), so it's excluded from this widget entirely rather than being a\r\n// selectable filter — mirrors how My Tasks hard-excludes fully-submitted tasks.\r\nconst OPEN_STATUS_CODES: Record = {\r\n notStarted: 'NotStarted',\r\n inProgress: 'InProgress',\r\n completed: 'Completed',\r\n rejected: 'Rejected',\r\n};\r\n\r\n@autoinject\r\nexport class MyRemediationsWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n hasLoaded = false;\r\n counts: RemediationCounts;\r\n allRemediations: RemediationSummary[];\r\n remediations: RemediationSummary[];\r\n activeStatFilter: RemediationStatFilter | null = null;\r\n sortParam = { active: 'createDateTime', direction: 'asc' };\r\n search = '';\r\n\r\n constructor(\r\n private remediationService: RemediationService,\r\n private userService: UserService,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'today',\r\n false,\r\n false,\r\n organizationId ? [organizationId] : [],\r\n );\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n this.activeStatFilter = null;\r\n\r\n const { organizationIds } = this.queryFilters.getQueryParams();\r\n const statuses = this.remediationService.getRemediationStatuses();\r\n const openStatusIds = Object.values(OPEN_STATUS_CODES).map(\r\n (code) => statuses.find((s) => s.code === code).id,\r\n );\r\n\r\n const [counts, remediations] = await Promise.all([\r\n this.remediationService.getRemediationCounts(organizationIds, true) as unknown as Promise<\r\n RemediationCounts\r\n >,\r\n this.remediationService.getRemediations(\r\n {\r\n organizationIds,\r\n onlyAssignedToMe: true,\r\n remediationStatusIds: openStatusIds,\r\n search: this.search,\r\n },\r\n 'summary',\r\n RecordStatus.ACTIVE,\r\n ) as unknown as Promise,\r\n ]);\r\n this.counts = counts;\r\n this.allRemediations = remediations;\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary();\r\n\r\n this.applyStatFilter();\r\n\r\n this.hasLoaded = true;\r\n }\r\n\r\n applyFilters() {\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.search = '';\r\n this.applyFilters();\r\n }\r\n\r\n runSearch() {\r\n this.item.reload();\r\n }\r\n\r\n clearSearch() {\r\n this.search = '';\r\n this.runSearch();\r\n }\r\n\r\n toggleStatFilter(filter: RemediationStatFilter) {\r\n this.activeStatFilter = this.activeStatFilter === filter ? null : filter;\r\n this.applyStatFilter();\r\n }\r\n\r\n toggleSort(key: string) {\r\n this.sortParam.direction =\r\n this.sortParam.active === key && this.sortParam.direction === 'asc' ? 'desc' : 'asc';\r\n this.sortParam.active = key;\r\n this.sortRemediations();\r\n }\r\n\r\n private applyStatFilter() {\r\n this.remediations = this.activeStatFilter\r\n ? this.allRemediations.filter(\r\n (r) => r.status === OPEN_STATUS_CODES[this.activeStatFilter],\r\n )\r\n : [...this.allRemediations];\r\n\r\n this.sortRemediations();\r\n }\r\n\r\n private sortRemediations() {\r\n const { active, direction } = this.sortParam;\r\n this.remediations = [...this.remediations].sort((a, b) => {\r\n const aValue = String((a as any)[active] ?? '').toLowerCase();\r\n const bValue = String((b as any)[active] ?? '').toLowerCase();\r\n if (aValue === bValue) return 0;\r\n if (direction === 'asc') return aValue > bValue ? 1 : -1;\r\n return aValue > bValue ? -1 : 1;\r\n });\r\n }\r\n\r\n remediationDetailUrl(remediation: RemediationSummary): string {\r\n return this.router.generate('remediation-detail', {\r\n id: remediation.id,\r\n // Lets the detail page's \"Back to...\" button return here instead of always\r\n // landing on the main Remediation List.\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n\r\n get viewAllUrl(): string {\r\n const statusCodes = this.activeStatFilter\r\n ? [OPEN_STATUS_CODES[this.activeStatFilter]]\r\n : Object.values(OPEN_STATUS_CODES);\r\n const statuses = this.remediationService.getRemediationStatuses();\r\n\r\n return this.router.generate('remediation-list', {\r\n onlyAssignedToMe: true,\r\n remediationStatusIds: statusCodes.map((code) => statuses.find((s) => s.code === code).id),\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".my-remediations-widget{height:100%;display:flex;flex-direction:column}.my-remediations-widget .my-remediations-table-wrapper{flex:1;min-height:0;overflow-y:auto}.my-remediations-widget .row.small-up-4 .column{display:flex;align-items:center;justify-content:center;gap:0.5rem;text-align:left}.my-remediations-widget .row.small-up-4 .column strong{margin:0;flex-shrink:0}.my-remediations-widget .stat-filter{cursor:pointer;border-radius:4px;padding-top:0.5rem;padding-bottom:0.5rem;transition:background-color 0.15s ease-in-out}.my-remediations-widget .stat-filter:hover{background-color:rgba(0,0,0,0.05)}.my-remediations-widget .stat-filter.active{background-color:rgba(143,24,56,0.1)}.my-remediations-widget .stat-filter.active span{font-weight:bold}.my-remediations-widget .my-remediations-table{margin-top:1rem;margin-bottom:0}.my-remediations-widget .my-remediations-table th,.my-remediations-widget .my-remediations-table td{padding:0.5rem !important}.my-remediations-widget .my-remediations-table th:first-child,.my-remediations-widget .my-remediations-table td:first-child{padding-left:0.5rem !important}.my-remediations-widget .my-remediations-table th:last-child,.my-remediations-widget .my-remediations-table td:last-child{padding-right:0.5rem !important}.my-remediations-widget .my-remediations-table a{font-weight:normal;font-size:inherit;color:#8f1838;width:auto;height:auto;border-radius:0;border:none;display:inline;margin:0;line-height:inherit;font-family:inherit}.my-remediations-widget .my-remediations-table th.sorting-asc:after{content:'\\\\f0de';opacity:1;color:#cc2350}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport MapService from 'location-testing/maps/map-service';\r\nimport MapSummary from 'location-testing/maps/map-summary';\r\nimport MapSummaryConverter from 'location-testing/maps/map-summary-converter';\r\nimport PlanService from 'location-testing/plans/plan-service';\r\nimport PlanSummary from 'location-testing/plans/plan-summary';\r\nimport PlanSummaryConverter from 'location-testing/plans/plan-summary-converter';\r\nimport operationsTimingOptions from 'location-testing/operations-timing-options';\r\nimport { TaskListQuery } from 'location-testing/tasks/task-list-query-filters';\r\nimport { TaskRequestSubmissionService } from 'location-testing/tasks/task-request-submission-service';\r\nimport TaskService from 'location-testing/tasks/task-service';\r\nimport { TaskStatusUpdateService } from 'location-testing/tasks/task-status-update-service';\r\nimport { TaskSummary } from 'location-testing/tasks/task-summary';\r\nimport Organization from 'organizations/organization';\r\nimport SecurityService from 'security/security-service';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\ninterface MyTaskRow extends TaskSummary {\r\n selected?: boolean;\r\n}\r\n\r\n@autoinject\r\nexport class MyTasksWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n canEditTasks: boolean;\r\n canFilterByMapPlan: boolean;\r\n mapSelectorOptions: SelectorOption[];\r\n planSelectorOptions: SelectorOption[];\r\n hasLoaded = false;\r\n upcomingCount: number;\r\n awaitingSubmissionCount: number;\r\n allTasks: MyTaskRow[];\r\n tasks: MyTaskRow[];\r\n activeStatFilter: 'upcoming' | 'awaitingSubmission' = null;\r\n isUpdatingStatus = false;\r\n isExportingCsv = false;\r\n hasSelectedTasks = false;\r\n allSelected = false;\r\n sortParam = { active: 'targetDateTime', direction: 'asc' };\r\n search = '';\r\n\r\n constructor(\r\n private taskService: TaskService,\r\n private userService: UserService,\r\n private mapService: MapService,\r\n private planService: PlanService,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n private dialogPresenter: DialogPresenter,\r\n private taskStatusUpdateService: TaskStatusUpdateService,\r\n private taskRequestSubmissionService: TaskRequestSubmissionService,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'allTime',\r\n true,\r\n false,\r\n organizationId ? [organizationId] : [],\r\n );\r\n this.canEditTasks =\r\n this.securityService.hasPermission('EditTasks') &&\r\n !this.securityService.isImpersonating();\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n if (!this.mapSelectorOptions) {\r\n this.canFilterByMapPlan =\r\n this.securityService.hasPermission('ViewMaps') &&\r\n this.securityService.hasPermission('ViewPlans');\r\n\r\n if (this.canFilterByMapPlan) {\r\n const maps = (await this.mapService.getMaps([])) as unknown as MapSummary[];\r\n const mapIds = maps.map((m) => m.id);\r\n const plans =\r\n mapIds.length > 0\r\n ? ((await this.planService.getPlans(mapIds)) as unknown as PlanSummary[])\r\n : [];\r\n\r\n this.mapSelectorOptions = MapSummaryConverter.toSelectorOptions(maps);\r\n this.planSelectorOptions = PlanSummaryConverter.toSelectorOptions(plans, maps);\r\n } else {\r\n this.mapSelectorOptions = [];\r\n this.planSelectorOptions = [];\r\n }\r\n }\r\n\r\n const { organizationIds, mapIds, planIds, targetStartDate, targetEndDate } =\r\n this.queryFilters.getQueryParams();\r\n const tasks = (await this.taskService.getTasks(\r\n {\r\n organizationIds,\r\n mapIds,\r\n planIds,\r\n targetStartDate,\r\n targetEndDate,\r\n onlyAssignedToMe: true,\r\n search: this.search,\r\n },\r\n 'summary',\r\n )) as unknown as TaskSummary[];\r\n\r\n this.upcomingCount = tasks.filter((t) => this.isUpcoming(t)).length;\r\n this.awaitingSubmissionCount = tasks.filter((t) => this.isAwaitingSubmission(t)).length;\r\n\r\n this.allTasks = tasks.filter((t) => this.isUpcoming(t) || this.isAwaitingSubmission(t));\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary({\r\n includeDateRange: true,\r\n includeMapPlan: this.canFilterByMapPlan,\r\n });\r\n\r\n this.applyStatFilter();\r\n\r\n this.hasSelectedTasks = false;\r\n this.allSelected = false;\r\n this.hasLoaded = true;\r\n }\r\n\r\n applyFilters() {\r\n this.queryFilters.dateRangeQueryFilters.persistCurrentSelection();\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.search = '';\r\n this.applyFilters();\r\n }\r\n\r\n runSearch() {\r\n this.item.reload();\r\n }\r\n\r\n clearSearch() {\r\n this.search = '';\r\n this.runSearch();\r\n }\r\n\r\n updateSelectionState() {\r\n this.hasSelectedTasks = this.tasks?.some((t) => t.selected) ?? false;\r\n this.allSelected = this.tasks?.length > 0 && this.tasks.every((t) => t.selected);\r\n }\r\n\r\n toggleSelectAll() {\r\n this.tasks.forEach((t) => (t.selected = this.allSelected));\r\n this.updateSelectionState();\r\n }\r\n\r\n toggleStatFilter(filter: 'upcoming' | 'awaitingSubmission') {\r\n this.activeStatFilter = this.activeStatFilter === filter ? null : filter;\r\n this.allTasks.forEach((t) => (t.selected = false));\r\n this.applyStatFilter();\r\n this.updateSelectionState();\r\n }\r\n\r\n private applyStatFilter() {\r\n this.tasks =\r\n this.activeStatFilter === 'upcoming'\r\n ? this.allTasks.filter((t) => this.isUpcoming(t))\r\n : this.activeStatFilter === 'awaitingSubmission'\r\n ? this.allTasks.filter((t) => this.isAwaitingSubmission(t))\r\n : [...this.allTasks];\r\n this.sortTasks();\r\n }\r\n\r\n private isUpcoming(t: TaskSummary): boolean {\r\n return t.status === 'NotStarted' || t.status === 'InProgress';\r\n }\r\n\r\n private isAwaitingSubmission(t: TaskSummary): boolean {\r\n return t.status === 'Completed' && !t.sampleId;\r\n }\r\n\r\n toggleSort(key: string) {\r\n this.sortParam.direction =\r\n this.sortParam.active === key && this.sortParam.direction === 'asc' ? 'desc' : 'asc';\r\n this.sortParam.active = key;\r\n this.sortTasks();\r\n }\r\n\r\n private sortTasks() {\r\n const { active, direction } = this.sortParam;\r\n this.tasks = [...this.tasks].sort((a, b) => {\r\n const aValue = String((a as any)[active] ?? '').toLowerCase();\r\n const bValue = String((b as any)[active] ?? '').toLowerCase();\r\n if (aValue === bValue) return 0;\r\n if (direction === 'asc') return aValue > bValue ? 1 : -1;\r\n return aValue > bValue ? -1 : 1;\r\n });\r\n }\r\n\r\n async updateStatus(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const result = await this.taskStatusUpdateService.selectStatus(selectedTasks);\r\n if (result.cancelled) {\r\n return;\r\n }\r\n\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Update Tasks Status',\r\n `Are you sure you want to set the selected tasks to ${result.statusInfo.statusName}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.isUpdatingStatus = true;\r\n try {\r\n const taskIds = result.tasks.map((t) => t.id);\r\n await this.taskService.updateTaskStatus(\r\n taskIds,\r\n result.statusInfo.statusId,\r\n result.statusInfo.collectedDateTime,\r\n result.statusInfo.comments,\r\n );\r\n this.item.reload();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Setting Status',\r\n 'An unexpected error occurred while trying to update the tasks. Please try again later.',\r\n );\r\n } finally {\r\n this.isUpdatingStatus = false;\r\n }\r\n }\r\n\r\n async submitRequest(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n await this.taskRequestSubmissionService.submitRequest(selectedTasks);\r\n }\r\n\r\n async exportLabelsCsv(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n const exportableFields = (await this.taskService.getExportableLabelsCsvFields(\r\n taskIds,\r\n )) as any;\r\n const orgDefaultFields = JSON.parse(exportableFields.selected);\r\n\r\n const fieldSelection = (await this.dialogPresenter.showExportableFieldSelector(\r\n 'Select fields to be included with the export',\r\n exportableFields.all,\r\n orgDefaultFields,\r\n )) as any;\r\n if (!fieldSelection || fieldSelection.wasCancelled) {\r\n return;\r\n }\r\n\r\n this.isExportingCsv = true;\r\n try {\r\n const response = await this.taskService.exportLabelsCsv(taskIds, fieldSelection.output);\r\n const blob = new Blob([response as any], { type: 'text/csv' });\r\n const blobUrl = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n const dateString = new Date().toISOString().replace(/[-:.Z]/g, '');\r\n link.download = `tasks_${dateString}.csv`;\r\n link.click();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Exporting Labels CSV',\r\n 'An unexpected error occurred while trying to export labels CSV. Please try again later.',\r\n );\r\n } finally {\r\n this.isExportingCsv = false;\r\n }\r\n }\r\n\r\n async exportLabelsPdf(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const organizationIds = [...new Set(selectedTasks.map((t) => t.organizationId))];\r\n if (organizationIds.length > 1) {\r\n await this.dialogPresenter.showAlert(\r\n 'Cannot Export Labels PDF',\r\n 'There are tasks from more than one organization selected. Please ensure that tasks from a single organization are selected.',\r\n );\r\n return;\r\n }\r\n\r\n const labelTemplateSelection = (await this.dialogPresenter.showLabelSelector(\r\n 'Select a task label',\r\n 'Task',\r\n organizationIds[0],\r\n )) as any;\r\n if (!labelTemplateSelection || labelTemplateSelection.wasCancelled) {\r\n return;\r\n }\r\n\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n const url = this.taskService.getTaskLabelPdfUrl(taskIds, labelTemplateSelection.output.id);\r\n if (url.length > 4096) {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Exporting Labels PDF',\r\n `The number of tasks (${taskIds.length}) selected is not supported. Please select a lesser (< ~300) amount.`,\r\n );\r\n return;\r\n }\r\n\r\n window.location.href = url;\r\n }\r\n\r\n get viewAllUrl(): string {\r\n const { mapIds, planIds } = this.queryFilters.getQueryParams();\r\n const query: TaskListQuery = {\r\n ...this.taskListDateRangeQuery(),\r\n dateRangeOverride: true,\r\n mapIds,\r\n planIds,\r\n onlyAssignedToMe: true,\r\n };\r\n\r\n if (this.activeStatFilter === 'upcoming' || this.activeStatFilter === 'awaitingSubmission') {\r\n // 'awaitingSubmission' is an approximation - Task List has no equivalent to the\r\n // \"not yet submitted\" half of isAwaitingSubmission(), so this only narrows by status.\r\n const statusCodes =\r\n this.activeStatFilter === 'upcoming' ? ['NotStarted', 'InProgress'] : ['Completed'];\r\n const statuses = this.taskService.getTaskStatuses();\r\n query.taskStatusIds = statusCodes.map((code) => statuses.find((s) => s.code === code).id);\r\n }\r\n\r\n return this.router.generate('task-list', query);\r\n }\r\n\r\n taskDetailUrl(task: MyTaskRow): string {\r\n return this.router.generate('task-detail', {\r\n id: task.id,\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n\r\n operationsTimingCaption(operationsTiming: string): string {\r\n return (\r\n operationsTimingOptions.find((o) => o.value === operationsTiming)?.title ??\r\n operationsTiming\r\n );\r\n }\r\n\r\n statusCaption(status: string): string {\r\n return this.taskService.getTaskStatuses().find((s) => s.code === status)?.name ?? status;\r\n }\r\n\r\n operationsTimingTaskListUrl(task: MyTaskRow): string {\r\n const { mapIds, planIds } = this.queryFilters.getQueryParams();\r\n const query: TaskListQuery = {\r\n ...this.taskListDateRangeQuery(),\r\n dateRangeOverride: true,\r\n mapIds,\r\n planIds,\r\n operationsTimings: [task.operationsTiming],\r\n onlyAssignedToMe: true,\r\n };\r\n return this.router.generate('task-list', query);\r\n }\r\n\r\n // task-list's own DateRangeQueryFilter has no 'allTime' option (that's opt-in per-widget),\r\n // so translate it to the universally-supported 'custom' + null bounds for the outbound link.\r\n private taskListDateRangeQuery() {\r\n const { dateRangeOption, targetStartDate, targetEndDate } = this.queryFilters.getQueryParams();\r\n return dateRangeOption === 'allTime'\r\n ? { dateRangeOption: 'custom', targetStartDate: null, targetEndDate: null }\r\n : { dateRangeOption, targetStartDate, targetEndDate };\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".my-tasks-widget{height:100%;display:flex;flex-direction:column}.my-tasks-widget .my-tasks-table-wrapper{flex:1;min-height:0;overflow-y:auto}.my-tasks-widget .row.small-up-2 .column{display:flex;align-items:center;justify-content:center;gap:0.5rem;text-align:left}.my-tasks-widget .row.small-up-2 .column strong{margin:0;flex-shrink:0}.my-tasks-widget .stat-filter{cursor:pointer;border-radius:4px;padding-top:0.5rem;padding-bottom:0.5rem;transition:background-color 0.15s ease-in-out}.my-tasks-widget .stat-filter:hover{background-color:rgba(0,0,0,0.05)}.my-tasks-widget .stat-filter.active{background-color:rgba(143,24,56,0.1)}.my-tasks-widget .stat-filter.active span{font-weight:bold}.my-tasks-widget .my-tasks-table{margin-top:1rem;margin-bottom:0}.my-tasks-widget .my-tasks-table th,.my-tasks-widget .my-tasks-table td{padding:0.5rem !important}.my-tasks-widget .my-tasks-table th:first-child,.my-tasks-widget .my-tasks-table td:first-child{padding-left:0.5rem !important}.my-tasks-widget .my-tasks-table th:last-child,.my-tasks-widget .my-tasks-table td:last-child{padding-right:0.5rem !important}.my-tasks-widget .my-tasks-table a{font-weight:normal;font-size:inherit;color:#8f1838;width:auto;height:auto;border-radius:0;border:none;display:inline;margin:0;line-height:inherit;font-family:inherit}.my-tasks-widget .my-tasks-table th.sorting-asc:after{content:'\\\\f0de';opacity:1;color:#cc2350}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport { PagedList } from 'infrastructure/paged-list';\r\nimport ValidationErrorFormatter from 'infrastructure/validation/validation-error-formatter';\r\nimport { RemediationCounts } from 'location-testing/remediations/remediation-counts';\r\nimport { RemediationSummary } from 'location-testing/remediations/remediation-summary';\r\nimport RemediationService from 'location-testing/remediations/remediation-service';\r\nimport Organization from 'organizations/organization';\r\nimport RecordStatus from 'record-status';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\ninterface RemediationRow extends RemediationSummary {\r\n selected?: boolean;\r\n}\r\n\r\ntype RemediationStatFilter = 'notStarted' | 'inProgress' | 'completed' | 'rejected';\r\n\r\n// Reviewed is a permanently closed state (approval user's sign-off, nothing left to act on),\r\n// so it's excluded from this widget entirely - same reasoning/set as My Open Remediations.\r\nconst OPEN_STATUS_CODES: Record = {\r\n notStarted: 'NotStarted',\r\n inProgress: 'InProgress',\r\n completed: 'Completed',\r\n rejected: 'Rejected',\r\n};\r\n\r\n@autoinject\r\nexport class RemediationManagementWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n hasLoaded = false;\r\n counts: RemediationCounts;\r\n remediations: RemediationRow[];\r\n pageNumber = 1;\r\n pageSize = 25;\r\n pageSizeOptions = [\r\n { value: 5, title: '5' },\r\n { value: 10, title: '10' },\r\n { value: 25, title: '25' },\r\n { value: 50, title: '50' },\r\n { value: 100, title: '100' },\r\n ];\r\n totalCount = 0;\r\n totalPages = 0;\r\n isLoadingPage = false;\r\n activeStatFilter: RemediationStatFilter | null = null;\r\n sortParam = { active: 'createDateTime', direction: 'asc' };\r\n search = '';\r\n canEditRemediations: boolean;\r\n hasSelectedRemediations = false;\r\n isReassigning = false;\r\n\r\n readonly allRemediationStatuses = ['NotStarted', 'InProgress', 'Completed'];\r\n\r\n constructor(\r\n private remediationService: RemediationService,\r\n private userService: UserService,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n private dialogPresenter: DialogPresenter,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'today',\r\n false,\r\n false,\r\n organizationId ? [organizationId] : [],\r\n );\r\n this.canEditRemediations =\r\n this.securityService.hasPermission('EditRemediations') &&\r\n !this.securityService.isImpersonating();\r\n\r\n const savedPageSize = Number(localStorage.getItem(this.pageSizeStorageKey));\r\n if (this.pageSizeOptions.some((o) => o.value === savedPageSize)) {\r\n this.pageSize = savedPageSize;\r\n }\r\n\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n private get pageSizeStorageKey(): string {\r\n return `page-size.${this.item.id}`;\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n this.pageNumber = 1;\r\n this.activeStatFilter = null;\r\n\r\n const { organizationIds } = this.queryFilters.getQueryParams();\r\n\r\n const [counts] = await Promise.all([\r\n this.remediationService.getRemediationCounts(organizationIds, false) as unknown as Promise<\r\n RemediationCounts\r\n >,\r\n this.loadRemediationPage(),\r\n ]);\r\n this.counts = counts;\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary();\r\n\r\n this.hasLoaded = true;\r\n }\r\n\r\n async loadRemediationPage(): Promise {\r\n const { organizationIds } = this.queryFilters.getQueryParams();\r\n const statuses = this.remediationService.getRemediationStatuses();\r\n const statusCodes = this.activeStatFilter\r\n ? [OPEN_STATUS_CODES[this.activeStatFilter]]\r\n : Object.values(OPEN_STATUS_CODES);\r\n\r\n const pagedResult = (await this.remediationService.getRemediations(\r\n {\r\n organizationIds,\r\n onlyAssignedToMe: false,\r\n remediationStatusIds: statusCodes.map((code) => statuses.find((s) => s.code === code).id),\r\n sortBy: this.sortParam.active,\r\n sortDirection: this.sortParam.direction === 'desc' ? 'Descending' : 'Ascending',\r\n pageNumber: this.pageNumber,\r\n pageSize: this.pageSize,\r\n search: this.search,\r\n },\r\n 'summary',\r\n RecordStatus.ACTIVE,\r\n )) as unknown as PagedList;\r\n\r\n this.remediations = pagedResult.data;\r\n this.totalCount = pagedResult.totalCount;\r\n this.totalPages = pagedResult.totalPages;\r\n this.hasSelectedRemediations = false;\r\n }\r\n\r\n updateSelectionState() {\r\n this.hasSelectedRemediations = this.remediations?.some((r) => r.selected) ?? false;\r\n }\r\n\r\n async reassignRemediations(): Promise {\r\n const selectedRemediations = this.remediations.filter((r) => r.selected);\r\n if (!selectedRemediations.length) {\r\n return;\r\n }\r\n\r\n const result = (await this.dialogPresenter.showUserSelector(\r\n 'Find a user to reassign remediations to',\r\n )) as any;\r\n if (!result || result.wasCancelled) {\r\n return;\r\n }\r\n\r\n const user = result.output;\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Reassign Selected Remediations',\r\n `Are you sure you want to reassign the selected remediations to user ${user.email}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.isReassigning = true;\r\n try {\r\n const ids = selectedRemediations.map((r) => r.id);\r\n await this.remediationService.reassignRemediations(ids, user.id);\r\n this.item.reload();\r\n } catch (error) {\r\n const errorMessage = ValidationErrorFormatter.format(\r\n 'An unexpected error occurred while trying to reassign the remediations. Please try again later.',\r\n error,\r\n );\r\n await this.dialogPresenter.showAlert('Error Reassigning Remediations', errorMessage);\r\n } finally {\r\n this.isReassigning = false;\r\n }\r\n }\r\n\r\n async toggleStatFilter(filter: RemediationStatFilter): Promise {\r\n this.activeStatFilter = this.activeStatFilter === filter ? null : filter;\r\n this.pageNumber = 1;\r\n await this.loadRemediationPageWithSpinner();\r\n }\r\n\r\n async toggleSort(key: string): Promise {\r\n this.sortParam.direction =\r\n this.sortParam.active === key && this.sortParam.direction === 'asc' ? 'desc' : 'asc';\r\n this.sortParam.active = key;\r\n this.pageNumber = 1;\r\n await this.loadRemediationPageWithSpinner();\r\n }\r\n\r\n async goToPage(pageNumber: number): Promise {\r\n if (pageNumber < 1 || pageNumber > this.totalPages || pageNumber === this.pageNumber) {\r\n return;\r\n }\r\n this.pageNumber = pageNumber;\r\n await this.loadRemediationPageWithSpinner();\r\n }\r\n\r\n async changePageSize(pageSize: number): Promise {\r\n this.pageSize = pageSize;\r\n this.pageNumber = 1;\r\n localStorage.setItem(this.pageSizeStorageKey, String(pageSize));\r\n await this.loadRemediationPageWithSpinner();\r\n }\r\n\r\n private async loadRemediationPageWithSpinner(): Promise {\r\n this.isLoadingPage = true;\r\n try {\r\n await this.loadRemediationPage();\r\n } finally {\r\n this.isLoadingPage = false;\r\n }\r\n }\r\n\r\n applyFilters() {\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.search = '';\r\n this.applyFilters();\r\n }\r\n\r\n async runSearch(): Promise {\r\n this.pageNumber = 1;\r\n await this.loadRemediationPageWithSpinner();\r\n }\r\n\r\n async clearSearch(): Promise {\r\n this.search = '';\r\n await this.runSearch();\r\n }\r\n\r\n remediationDetailUrl(remediation: RemediationSummary): string {\r\n return this.router.generate('remediation-detail', {\r\n id: remediation.id,\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n\r\n get viewAllUrl(): string {\r\n const statusCodes = this.activeStatFilter\r\n ? [OPEN_STATUS_CODES[this.activeStatFilter]]\r\n : Object.values(OPEN_STATUS_CODES);\r\n const statuses = this.remediationService.getRemediationStatuses();\r\n\r\n return this.router.generate('remediation-list', {\r\n remediationStatusIds: statusCodes.map((code) => statuses.find((s) => s.code === code).id),\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".remediation-management-widget{height:100%;display:flex;flex-direction:column}.remediation-management-widget .remediation-management-table-wrapper{position:relative;flex:1;min-height:0;overflow-y:auto}.remediation-management-widget .remediation-management-table-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;background-color:#fff;font-size:1.5rem;color:#8f1838}.remediation-management-widget .row.small-up-4 .column{display:flex;align-items:center;justify-content:center;gap:0.5rem;text-align:left}.remediation-management-widget .row.small-up-4 .column strong{margin:0;flex-shrink:0}.remediation-management-widget .stat-filter{cursor:pointer;border-radius:4px;padding-top:0.5rem;padding-bottom:0.5rem;transition:background-color 0.15s ease-in-out}.remediation-management-widget .stat-filter:hover{background-color:rgba(0,0,0,0.05)}.remediation-management-widget .stat-filter.active{background-color:rgba(143,24,56,0.1)}.remediation-management-widget .stat-filter.active span{font-weight:bold}.remediation-management-widget .remediation-management-table{margin-top:1rem;margin-bottom:0}.remediation-management-widget .remediation-management-table th,.remediation-management-widget .remediation-management-table td{padding:0.5rem !important}.remediation-management-widget .remediation-management-table th:first-child,.remediation-management-widget .remediation-management-table td:first-child{padding-left:0.5rem !important}.remediation-management-widget .remediation-management-table th:last-child,.remediation-management-widget .remediation-management-table td:last-child{padding-right:0.5rem !important}.remediation-management-widget .remediation-management-table a{font-weight:normal;font-size:inherit;color:#8f1838;width:auto;height:auto;border-radius:0;border:none;display:inline;margin:0;line-height:inherit;font-family:inherit}.remediation-management-widget .remediation-management-table th.sorting-asc:after{content:'\\\\f0de';opacity:1;color:#cc2350}.remediation-management-widget .remediation-management-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.5rem;flex-shrink:0;padding-top:0.5rem}.remediation-management-widget .remediation-management-page-size{display:flex;align-items:center;gap:0.4rem;font-size:0.8125rem}.remediation-management-widget .remediation-management-page-size label{margin-bottom:0;white-space:nowrap}.remediation-management-widget .remediation-management-page-size .select2{min-width:4.5rem}.remediation-management-widget .remediation-management-pager{display:flex;align-items:center;justify-content:center;gap:0.75rem}.remediation-management-widget .remediation-management-pager button{cursor:pointer;background:none;border:none;color:#8f1838}.remediation-management-widget .remediation-management-pager button:disabled{color:#ccc;cursor:default}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport Organization from 'organizations/organization';\r\nimport RequestService from 'requests/request-service';\r\nimport SecurityService from 'security/security-service';\r\nimport { StatusQuery } from 'status/status-query-filters';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\n@autoinject\r\nexport class RequestStatusesWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n chartData: any;\r\n linkUrl: string;\r\n\r\n constructor(\r\n private requestService: RequestService,\r\n private userService: UserService,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'last7Days',\r\n false,\r\n true,\r\n organizationId ? [organizationId] : [],\r\n );\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n const query = this.queryFilters.getQueryParams();\r\n const statusQuery: StatusQuery = {\r\n organizationIds: query.organizationIds,\r\n dateRangeOption: query.dateRangeOption,\r\n targetStartDate: query.targetStartDate,\r\n targetEndDate: query.targetEndDate,\r\n dateRangeOverride: true,\r\n };\r\n const counts = await this.requestService.getRequestStatusCounts(statusQuery);\r\n\r\n const maxValue = counts.reduce((sum, c) => sum + c.count, 0);\r\n\r\n const buildDatapoint = (requestStatus: string, label: string, dataType: string) => {\r\n const match = counts.find((c) => c.requestStatus === requestStatus);\r\n const value = match ? match.count : 0;\r\n return {\r\n value,\r\n label,\r\n dataType,\r\n maxValue,\r\n percent: maxValue === 0 ? 0 : value / maxValue,\r\n url: this.router.generate('status', {\r\n ...statusQuery,\r\n customerRequestStatus: label,\r\n }),\r\n };\r\n };\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary({ includeDateRange: true });\r\n\r\n this.linkUrl = this.router.generate('status', statusQuery);\r\n this.chartData = {\r\n maxValue,\r\n datapoints: [\r\n buildDatapoint('Submitted', 'Submitted', 'submitted'),\r\n buildDatapoint('Received', 'Received', 'received'),\r\n buildDatapoint('Processing', 'Processing', 'processing'),\r\n buildDatapoint('Completed', 'Completed', 'completed'),\r\n ],\r\n };\r\n }\r\n\r\n applyFilters() {\r\n this.queryFilters.dateRangeQueryFilters.persistCurrentSelection();\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.applyFilters();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".request-statuses-widget.analytics{padding-top:1rem;padding-bottom:1rem}.request-statuses-widget .progress{margin-bottom:0.5rem}.request-statuses-widget .progress-title{margin-bottom:0.25rem}.request-statuses-widget date-range-filter .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #d5d5d6}.request-statuses-widget date-range-filter .select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;background:transparent;font-size:1rem;line-height:38px}.request-statuses-widget date-range-filter .select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport operationsTimingOptions from 'location-testing/operations-timing-options';\r\nimport MapService from 'location-testing/maps/map-service';\r\nimport MapSummary from 'location-testing/maps/map-summary';\r\nimport MapSummaryConverter from 'location-testing/maps/map-summary-converter';\r\nimport PlanService from 'location-testing/plans/plan-service';\r\nimport PlanSummary from 'location-testing/plans/plan-summary';\r\nimport PlanSummaryConverter from 'location-testing/plans/plan-summary-converter';\r\nimport { TaskListQuery } from 'location-testing/tasks/task-list-query-filters';\r\nimport { TaskManagementCounts } from 'location-testing/tasks/task-management-counts';\r\nimport { TaskRequestSubmissionService } from 'location-testing/tasks/task-request-submission-service';\r\nimport { TaskSummary } from 'location-testing/tasks/task-summary';\r\nimport TaskService from 'location-testing/tasks/task-service';\r\nimport { TaskStatusUpdateService } from 'location-testing/tasks/task-status-update-service';\r\nimport Organization from 'organizations/organization';\r\nimport SecurityService from 'security/security-service';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport { PagedList } from 'infrastructure/paged-list';\r\nimport RecordStatus from 'record-status';\r\nimport UserService from 'users/user-service';\r\nimport moment from 'moment';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\ninterface TaskRow extends TaskSummary {\r\n selected?: boolean;\r\n}\r\n\r\n@autoinject\r\nexport class ManageTasksWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n canFilterByMapPlan: boolean;\r\n mapSelectorOptions: SelectorOption[];\r\n planSelectorOptions: SelectorOption[];\r\n hasLoaded = false;\r\n counts: TaskManagementCounts;\r\n tasks: TaskRow[];\r\n pageNumber = 1;\r\n pageSize = 25;\r\n pageSizeOptions = [\r\n { value: 5, title: '5' },\r\n { value: 10, title: '10' },\r\n { value: 25, title: '25' },\r\n { value: 50, title: '50' },\r\n { value: 100, title: '100' },\r\n ];\r\n totalCount = 0;\r\n totalPages = 0;\r\n isLoadingPage = false;\r\n activeStatFilter: 'assigned' | 'unassigned' | 'overdue' | null = null;\r\n sortParam = { active: 'targetDateTime', direction: 'asc' };\r\n search = '';\r\n canEditTasks: boolean;\r\n hasSelectedTasks = false;\r\n allSelected = false;\r\n canUnassignSelectedTasks = false;\r\n isAssigning = false;\r\n isUnassigning = false;\r\n isUpdatingStatus = false;\r\n isExportingCsv = false;\r\n\r\n constructor(\r\n private taskService: TaskService,\r\n private userService: UserService,\r\n private mapService: MapService,\r\n private planService: PlanService,\r\n private securityService: SecurityService,\r\n private dialogPresenter: DialogPresenter,\r\n private taskStatusUpdateService: TaskStatusUpdateService,\r\n private taskRequestSubmissionService: TaskRequestSubmissionService,\r\n private router: Router,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'allTime',\r\n true,\r\n false,\r\n organizationId ? [organizationId] : [],\r\n );\r\n this.canEditTasks =\r\n this.securityService.hasPermission('EditTasks') &&\r\n !this.securityService.isImpersonating();\r\n\r\n const savedPageSize = Number(localStorage.getItem(this.pageSizeStorageKey));\r\n if (this.pageSizeOptions.some((o) => o.value === savedPageSize)) {\r\n this.pageSize = savedPageSize;\r\n }\r\n\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n private get pageSizeStorageKey(): string {\r\n return `page-size.${this.item.id}`;\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n if (!this.mapSelectorOptions) {\r\n this.canFilterByMapPlan =\r\n this.securityService.hasPermission('ViewMaps') &&\r\n this.securityService.hasPermission('ViewPlans');\r\n\r\n if (this.canFilterByMapPlan) {\r\n const maps = (await this.mapService.getMaps([])) as unknown as MapSummary[];\r\n const mapIds = maps.map((m) => m.id);\r\n const plans =\r\n mapIds.length > 0\r\n ? ((await this.planService.getPlans(mapIds)) as unknown as PlanSummary[])\r\n : [];\r\n\r\n this.mapSelectorOptions = MapSummaryConverter.toSelectorOptions(maps);\r\n this.planSelectorOptions = PlanSummaryConverter.toSelectorOptions(plans, maps);\r\n } else {\r\n this.mapSelectorOptions = [];\r\n this.planSelectorOptions = [];\r\n }\r\n }\r\n\r\n this.pageNumber = 1;\r\n this.activeStatFilter = null;\r\n\r\n const { organizationIds, mapIds, planIds, targetStartDate, targetEndDate } =\r\n this.queryFilters.getQueryParams();\r\n\r\n const [counts] = await Promise.all([\r\n this.taskService.getTaskManagementCounts({\r\n organizationIds,\r\n mapIds,\r\n planIds,\r\n targetStartDate,\r\n targetEndDate,\r\n }),\r\n this.loadTaskPage(),\r\n ]);\r\n this.counts = counts;\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary({\r\n includeDateRange: true,\r\n includeMapPlan: this.canFilterByMapPlan,\r\n });\r\n\r\n this.hasLoaded = true;\r\n }\r\n\r\n async loadTaskPage(): Promise {\r\n const { organizationIds, mapIds, planIds, targetStartDate, targetEndDate } =\r\n this.queryFilters.getQueryParams();\r\n\r\n const pagedResult = (await this.taskService.getTasks(\r\n {\r\n organizationIds,\r\n mapIds,\r\n planIds,\r\n targetStartDate,\r\n targetEndDate,\r\n isAssigned:\r\n this.activeStatFilter === 'assigned'\r\n ? true\r\n : this.activeStatFilter === 'unassigned'\r\n ? false\r\n : undefined,\r\n overdue: this.activeStatFilter === 'overdue' ? true : undefined,\r\n recordStatus: RecordStatus.ACTIVE,\r\n sortBy: this.sortParam.active,\r\n sortDirection: this.sortParam.direction === 'desc' ? 'Descending' : 'Ascending',\r\n pageNumber: this.pageNumber,\r\n pageSize: this.pageSize,\r\n search: this.search,\r\n },\r\n 'summary',\r\n )) as unknown as PagedList;\r\n\r\n this.tasks = pagedResult.data;\r\n this.totalCount = pagedResult.totalCount;\r\n this.totalPages = pagedResult.totalPages;\r\n this.hasSelectedTasks = false;\r\n this.allSelected = false;\r\n this.canUnassignSelectedTasks = false;\r\n }\r\n\r\n updateSelectionState() {\r\n const selectedTasks = this.tasks?.filter((t) => t.selected) ?? [];\r\n this.hasSelectedTasks = selectedTasks.length > 0;\r\n this.allSelected = this.tasks?.length > 0 && this.tasks.every((t) => t.selected);\r\n // Mirrors task-list.ts's setUnassignAbility(): only tasks that haven't been\r\n // completed and are currently assigned can be unassigned.\r\n this.canUnassignSelectedTasks =\r\n selectedTasks.length > 0 &&\r\n selectedTasks.every(\r\n (t) => (t.status === 'NotStarted' || t.status === 'InProgress') && !!t.assignedUserEmail,\r\n );\r\n }\r\n\r\n toggleSelectAll() {\r\n this.tasks.forEach((t) => (t.selected = this.allSelected));\r\n this.updateSelectionState();\r\n }\r\n\r\n async assignTasks(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const result = (await this.dialogPresenter.showUserSelector(\r\n 'Find a user to assign tasks to',\r\n )) as any;\r\n if (!result || result.wasCancelled) {\r\n return;\r\n }\r\n\r\n const user = result.output;\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Assign Selected Tasks',\r\n `Are you sure you want to assign the selected tasks to user ${user.email}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.isAssigning = true;\r\n try {\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n await this.taskService.assignTasks(taskIds, user.id);\r\n this.item.reload();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Assigning Tasks',\r\n 'An unexpected error occurred while trying to assign the tasks. Please try again later.',\r\n );\r\n } finally {\r\n this.isAssigning = false;\r\n }\r\n }\r\n\r\n async unassignTasks(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const tasksPlurality = selectedTasks.length > 1 ? 's' : '';\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n `Unassign Task${tasksPlurality}`,\r\n `Unassign ${selectedTasks.length} task${tasksPlurality}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.isUnassigning = true;\r\n try {\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n await this.taskService.unassignTasks(taskIds);\r\n this.item.reload();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n `Error Unassigning Task${tasksPlurality}`,\r\n `An error occurred while unassigning your task${tasksPlurality}. Please try again later.`,\r\n );\r\n } finally {\r\n this.isUnassigning = false;\r\n }\r\n }\r\n\r\n async updateStatus(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const result = await this.taskStatusUpdateService.selectStatus(selectedTasks);\r\n if (result.cancelled) {\r\n return;\r\n }\r\n\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Update Tasks Status',\r\n `Are you sure you want to set the selected tasks to ${result.statusInfo.statusName}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.isUpdatingStatus = true;\r\n try {\r\n const taskIds = result.tasks.map((t) => t.id);\r\n await this.taskService.updateTaskStatus(\r\n taskIds,\r\n result.statusInfo.statusId,\r\n result.statusInfo.collectedDateTime,\r\n result.statusInfo.comments,\r\n );\r\n this.item.reload();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Setting Status',\r\n 'An unexpected error occurred while trying to update the tasks. Please try again later.',\r\n );\r\n } finally {\r\n this.isUpdatingStatus = false;\r\n }\r\n }\r\n\r\n async submitRequest(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n await this.taskRequestSubmissionService.submitRequest(selectedTasks);\r\n }\r\n\r\n async exportLabelsCsv(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n const exportableFields = (await this.taskService.getExportableLabelsCsvFields(\r\n taskIds,\r\n )) as any;\r\n const orgDefaultFields = JSON.parse(exportableFields.selected);\r\n\r\n const fieldSelection = (await this.dialogPresenter.showExportableFieldSelector(\r\n 'Select fields to be included with the export',\r\n exportableFields.all,\r\n orgDefaultFields,\r\n )) as any;\r\n if (!fieldSelection || fieldSelection.wasCancelled) {\r\n return;\r\n }\r\n\r\n this.isExportingCsv = true;\r\n try {\r\n const response = await this.taskService.exportLabelsCsv(taskIds, fieldSelection.output);\r\n const blob = new Blob([response as any], { type: 'text/csv' });\r\n const blobUrl = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n const dateString = new Date().toISOString().replace(/[-:.Z]/g, '');\r\n link.download = `tasks_${dateString}.csv`;\r\n link.click();\r\n } catch {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Exporting Labels CSV',\r\n 'An unexpected error occurred while trying to export labels CSV. Please try again later.',\r\n );\r\n } finally {\r\n this.isExportingCsv = false;\r\n }\r\n }\r\n\r\n async exportLabelsPdf(): Promise {\r\n const selectedTasks = this.tasks.filter((t) => t.selected);\r\n if (!selectedTasks.length) {\r\n return;\r\n }\r\n\r\n const organizationIds = [...new Set(selectedTasks.map((t) => t.organizationId))];\r\n if (organizationIds.length > 1) {\r\n await this.dialogPresenter.showAlert(\r\n 'Cannot Export Labels PDF',\r\n 'There are tasks from more than one organization selected. Please ensure that tasks from a single organization are selected.',\r\n );\r\n return;\r\n }\r\n\r\n const labelTemplateSelection = (await this.dialogPresenter.showLabelSelector(\r\n 'Select a task label',\r\n 'Task',\r\n organizationIds[0],\r\n )) as any;\r\n if (!labelTemplateSelection || labelTemplateSelection.wasCancelled) {\r\n return;\r\n }\r\n\r\n const taskIds = selectedTasks.map((t) => t.id);\r\n const url = this.taskService.getTaskLabelPdfUrl(taskIds, labelTemplateSelection.output.id);\r\n if (url.length > 4096) {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Exporting Labels PDF',\r\n `The number of tasks (${taskIds.length}) selected is not supported. Please select a lesser (< ~300) amount.`,\r\n );\r\n return;\r\n }\r\n\r\n window.location.href = url;\r\n }\r\n\r\n get viewAllUrl(): string {\r\n const { mapIds, planIds } = this.queryFilters.getQueryParams();\r\n const query: TaskListQuery = {\r\n mapIds,\r\n planIds,\r\n ...this.taskListDateRangeQuery(),\r\n dateRangeOverride: true,\r\n };\r\n\r\n if (this.activeStatFilter === 'assigned') {\r\n query.isAssigned = 'true';\r\n } else if (this.activeStatFilter === 'unassigned') {\r\n query.isAssigned = 'false';\r\n } else if (this.activeStatFilter === 'overdue') {\r\n // Mirrors the legacy dashboard's Overdue tile: Not Started/In Progress tasks\r\n // targeted on or before now, independent of the widget's own date range filter.\r\n query.dateRangeOption = 'custom';\r\n query.targetStartDate = null;\r\n query.targetEndDate = moment().format();\r\n query.enableTimeFilter = true;\r\n const statuses = this.taskService.getTaskStatuses();\r\n query.taskStatusIds = ['NotStarted', 'InProgress'].map(\r\n (code) => statuses.find((s) => s.code === code).id,\r\n );\r\n }\r\n\r\n return this.router.generate('task-list', query);\r\n }\r\n\r\n taskDetailUrl(task: TaskRow): string {\r\n return this.router.generate('task-detail', {\r\n id: task.id,\r\n returnUrl: this.router.generate('dashboard-widgets'),\r\n returnLabel: 'Dashboard',\r\n });\r\n }\r\n\r\n operationsTimingTaskListUrl(task: TaskRow): string {\r\n const { mapIds, planIds } = this.queryFilters.getQueryParams();\r\n const query: TaskListQuery = {\r\n mapIds,\r\n planIds,\r\n ...this.taskListDateRangeQuery(),\r\n dateRangeOverride: true,\r\n operationsTimings: [task.operationsTiming],\r\n };\r\n return this.router.generate('task-list', query);\r\n }\r\n\r\n // task-list's own DateRangeQueryFilter has no 'allTime' option (that's opt-in per-widget),\r\n // so translate it to the universally-supported 'custom' + null bounds for the outbound link.\r\n private taskListDateRangeQuery() {\r\n const { dateRangeOption, targetStartDate, targetEndDate } = this.queryFilters.getQueryParams();\r\n return dateRangeOption === 'allTime'\r\n ? { dateRangeOption: 'custom', targetStartDate: null, targetEndDate: null }\r\n : { dateRangeOption, targetStartDate, targetEndDate };\r\n }\r\n\r\n async toggleStatFilter(filter: 'assigned' | 'unassigned' | 'overdue'): Promise {\r\n this.activeStatFilter = this.activeStatFilter === filter ? null : filter;\r\n this.pageNumber = 1;\r\n await this.loadTaskPageWithSpinner();\r\n }\r\n\r\n async runSearch(): Promise {\r\n this.pageNumber = 1;\r\n await this.loadTaskPageWithSpinner();\r\n }\r\n\r\n async clearSearch(): Promise {\r\n this.search = '';\r\n await this.runSearch();\r\n }\r\n\r\n async toggleSort(key: string): Promise {\r\n this.sortParam.direction =\r\n this.sortParam.active === key && this.sortParam.direction === 'asc' ? 'desc' : 'asc';\r\n this.sortParam.active = key;\r\n this.pageNumber = 1;\r\n await this.loadTaskPageWithSpinner();\r\n }\r\n\r\n async goToPage(pageNumber: number): Promise {\r\n if (pageNumber < 1 || pageNumber > this.totalPages || pageNumber === this.pageNumber) {\r\n return;\r\n }\r\n\r\n this.pageNumber = pageNumber;\r\n await this.loadTaskPageWithSpinner();\r\n }\r\n\r\n async changePageSize(pageSize: number): Promise {\r\n this.pageSize = pageSize;\r\n this.pageNumber = 1;\r\n localStorage.setItem(this.pageSizeStorageKey, String(pageSize));\r\n await this.loadTaskPageWithSpinner();\r\n }\r\n\r\n private async loadTaskPageWithSpinner(): Promise {\r\n this.isLoadingPage = true;\r\n try {\r\n await this.loadTaskPage();\r\n } finally {\r\n this.isLoadingPage = false;\r\n }\r\n }\r\n\r\n operationsTimingCaption(operationsTiming: string): string {\r\n return (\r\n operationsTimingOptions.find((o) => o.value === operationsTiming)?.title ??\r\n operationsTiming\r\n );\r\n }\r\n\r\n applyFilters() {\r\n this.queryFilters.dateRangeQueryFilters.persistCurrentSelection();\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.search = '';\r\n this.applyFilters();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".manage-tasks-widget{height:100%;display:flex;flex-direction:column}.manage-tasks-widget .manage-tasks-table-wrapper{position:relative;flex:1;min-height:0;overflow-y:auto}.manage-tasks-widget .manage-tasks-table-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;background-color:#fff;font-size:1.5rem;color:#8f1838}.manage-tasks-widget .row.small-up-3 .column{display:flex;align-items:center;justify-content:center;gap:0.5rem;text-align:left}.manage-tasks-widget .row.small-up-3 .column strong{margin:0;flex-shrink:0}.manage-tasks-widget .stat-filter{cursor:pointer;border-radius:4px;padding-top:0.5rem;padding-bottom:0.5rem;transition:background-color 0.15s ease-in-out}.manage-tasks-widget .stat-filter:hover{background-color:rgba(0,0,0,0.05)}.manage-tasks-widget .stat-filter.active{background-color:rgba(143,24,56,0.1)}.manage-tasks-widget .stat-filter.active span{font-weight:bold}.manage-tasks-widget .manage-tasks-table{margin-top:1rem;margin-bottom:0}.manage-tasks-widget .manage-tasks-table th,.manage-tasks-widget .manage-tasks-table td{padding:0.5rem !important}.manage-tasks-widget .manage-tasks-table th:first-child,.manage-tasks-widget .manage-tasks-table td:first-child{padding-left:0.5rem !important}.manage-tasks-widget .manage-tasks-table th:last-child,.manage-tasks-widget .manage-tasks-table td:last-child{padding-right:0.5rem !important}.manage-tasks-widget .manage-tasks-table a{font-weight:normal;font-size:inherit;color:#8f1838;width:auto;height:auto;border-radius:0;border:none;display:inline;margin:0;line-height:inherit;font-family:inherit}.manage-tasks-widget .manage-tasks-table th.sorting-asc:after{content:'\\\\f0de';opacity:1;color:#cc2350}.manage-tasks-widget .manage-tasks-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:0.5rem;flex-shrink:0;padding-top:0.5rem}.manage-tasks-widget .manage-tasks-page-size{display:flex;align-items:center;gap:0.4rem;font-size:0.8125rem}.manage-tasks-widget .manage-tasks-page-size label{margin-bottom:0;white-space:nowrap}.manage-tasks-widget .manage-tasks-page-size .select2{min-width:4.5rem}.manage-tasks-widget .manage-tasks-pager{display:flex;align-items:center;justify-content:center;gap:0.75rem}.manage-tasks-widget .manage-tasks-pager button{cursor:pointer;background:none;border:none;color:#8f1838}.manage-tasks-widget .manage-tasks-pager button:disabled{color:#ccc;cursor:default}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport Organization from 'organizations/organization';\r\nimport SecurityService from 'security/security-service';\r\nimport TestService from 'tests/test-service';\r\nimport OutcomeStatus from 'test-results/outcome-status';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardWidgetsQueryFilters } from '../dashboard-widgets-query-filters';\r\nimport { DashboardWidget } from '../dashboard-widget';\r\nimport { WidgetLayoutItem } from '../widget-layout-item';\r\n\r\n@autoinject\r\nexport class TestResultsWidget implements DashboardWidget {\r\n queryFilters: DashboardWidgetsQueryFilters;\r\n item: WidgetLayoutItem;\r\n\r\n organizations: Organization[];\r\n chartData: any;\r\n linkUrl: string;\r\n\r\n constructor(\r\n private testService: TestService,\r\n private userService: UserService,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n ) {}\r\n\r\n activate(item: WidgetLayoutItem) {\r\n this.item = item;\r\n const { organizationId } = this.securityService.getEffectiveUser();\r\n this.queryFilters = new DashboardWidgetsQueryFilters(\r\n item.id,\r\n 'last7Days',\r\n false,\r\n true,\r\n organizationId ? [organizationId] : [],\r\n );\r\n item.contentVm = this;\r\n item.vmReadyResolve();\r\n }\r\n\r\n async loadData(): Promise {\r\n if (!this.organizations) {\r\n this.organizations = await this.userService.getCurrentUserOrganizations();\r\n }\r\n\r\n const query = this.queryFilters.getQueryParams();\r\n const { organizationIds, dateRangeOption, targetStartDate, targetEndDate } = query;\r\n\r\n const counts = await this.testService.getTestResultCounts({\r\n organizationIds,\r\n targetStartDate,\r\n targetEndDate,\r\n });\r\n\r\n const maxValue = counts.reduce((sum, c) => sum + c.count, 0);\r\n\r\n const generateLinkUrl = (outcomeStatus: OutcomeStatus) =>\r\n this.router.generate('test-results-list', {\r\n outcomeStatus,\r\n dateRangeOption,\r\n targetStartDate,\r\n targetEndDate,\r\n dateRangeOverride: true,\r\n });\r\n\r\n const buildDatapoint = (passed: boolean | null, label: string, dataType: string) => {\r\n const match = counts.find((c) => c.passed === passed);\r\n const value = match ? match.count : 0;\r\n return {\r\n value,\r\n label,\r\n dataType,\r\n maxValue,\r\n percent: maxValue === 0 ? 0 : value / maxValue,\r\n url: generateLinkUrl(label as OutcomeStatus),\r\n };\r\n };\r\n\r\n this.item.filterCaption = this.queryFilters.buildFilterSummary({ includeDateRange: true });\r\n\r\n this.linkUrl = generateLinkUrl(OutcomeStatus.ALL);\r\n this.chartData = {\r\n maxValue,\r\n datapoints: [\r\n buildDatapoint(null, 'Incomplete', 'submitted'),\r\n buildDatapoint(true, 'Pass', 'negative'),\r\n buildDatapoint(false, 'Fail', 'positive'),\r\n ],\r\n };\r\n }\r\n\r\n applyFilters() {\r\n this.queryFilters.dateRangeQueryFilters.persistCurrentSelection();\r\n this.item.reload();\r\n }\r\n\r\n resetFilters() {\r\n this.queryFilters.reset();\r\n this.applyFilters();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".test-results-widget.analytics{padding-top:1rem;padding-bottom:1.5rem}.test-results-widget .progress{margin-bottom:0.5rem}.test-results-widget .progress-title{margin-bottom:0.25rem}.test-results-widget date-range-filter .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #d5d5d6}.test-results-widget date-range-filter .select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;background:transparent;font-size:1rem;line-height:38px}.test-results-widget date-range-filter .select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { Redirect, Router } from 'aurelia-router';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport MapService from 'location-testing/maps/map-service';\r\nimport MapSummary from 'location-testing/maps/map-summary';\r\nimport MapSummaryConverter from 'location-testing/maps/map-summary-converter';\r\nimport PlanService from 'location-testing/plans/plan-service';\r\nimport PlanSummary from 'location-testing/plans/plan-summary';\r\nimport PlanSummaryConverter from 'location-testing/plans/plan-summary-converter';\r\nimport RemediationService from 'location-testing/remediations/remediation-service';\r\nimport RemediationStatus from 'location-testing/remediations/remediation-status';\r\nimport { TaskListQuery } from 'location-testing/tasks/task-list-query-filters';\r\nimport TaskService from 'location-testing/tasks/task-service';\r\nimport TaskStatus from 'location-testing/tasks/task-status';\r\nimport moment from 'moment';\r\nimport NewsItemService from 'news-items/news-item-service';\r\nimport Organization from 'organizations/organization';\r\nimport OrganizationService from 'organizations/organization-service';\r\nimport RequestService from 'requests/request-service';\r\nimport SecurityService from 'security/security-service';\r\nimport { StatusQuery } from 'status/status-query-filters';\r\nimport OutcomeStatus from 'test-results/outcome-status';\r\nimport { TestResultListQuery } from 'test-results/test-results-query-filters';\r\nimport TestService from 'tests/test-service';\r\nimport UserService from 'users/user-service';\r\nimport { DashboardQuery, DashboardQueryFilters } from './dashboard-query-filters';\r\nimport DashboardService from './dashboard-service';\r\n\r\ntype DashboardLinks = Record;\r\n\r\ninterface DateRange {\r\n start: moment.Moment;\r\n exclusiveEnd: moment.Moment;\r\n title: string;\r\n}\r\n\r\n@autoinject\r\nexport class Dashboard {\r\n // filters\r\n dashboardQueryFilters: DashboardQueryFilters;\r\n mapSelectorOptions: SelectorOption[];\r\n planSelectorOptions: SelectorOption[];\r\n\r\n // controls\r\n filterAccordion: any;\r\n\r\n // subscriptions\r\n applyFiltersSubscription: Subscription;\r\n clearFiltersSubscription: Subscription;\r\n\r\n // permissions\r\n canViewPriceQuotes: boolean;\r\n canViewRequests: boolean;\r\n canViewResults: boolean;\r\n canViewAllTasks: boolean;\r\n canViewMyTasks: boolean;\r\n canViewAllRemediations: boolean;\r\n canViewMyRemediations: boolean;\r\n canViewMaps: boolean;\r\n canViewPlans: boolean;\r\n canFilter: boolean;\r\n\r\n //\r\n requestChartLinkUrl: string;\r\n requestChartData: any;\r\n resultChartLinkUrl: string;\r\n resultChartData: any;\r\n\r\n myTaskCountsToday: any;\r\n myTaskCountsWeek: any;\r\n myRemediationCounts: any;\r\n\r\n taskCountsToday: any;\r\n taskCountsWeek: any;\r\n criticaltaskCounts: any;\r\n remediationCounts: any;\r\n\r\n taskStatuses: TaskStatus[];\r\n remediationStatuses: RemediationStatus[];\r\n\r\n currentUser: any;\r\n newsItems: any;\r\n organizations: Organization[];\r\n dashboardLinks: DashboardLinks;\r\n\r\n statusQuery: StatusQuery;\r\n testResultListQuery: TestResultListQuery;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private logger: Logger,\r\n private securityService: SecurityService,\r\n private organizationService: OrganizationService,\r\n private newsItemService: NewsItemService,\r\n private userService: UserService,\r\n private requestService: RequestService,\r\n private testService: TestService,\r\n private dashboardService: DashboardService,\r\n private mapService: MapService,\r\n private planService: PlanService,\r\n private taskService: TaskService,\r\n private remediationService: RemediationService,\r\n ) {\r\n this.logger.name = 'dashboard';\r\n\r\n // Permissions\r\n this.canViewPriceQuotes = this.securityService.hasPermission('ViewPriceQuotes');\r\n this.canViewRequests = this.securityService.hasPermission('ViewRequests');\r\n this.canViewResults = this.securityService.hasPermission('ViewResults');\r\n this.canViewAllTasks = this.securityService.hasPermission('ViewAllTasks');\r\n this.canViewMyTasks = this.securityService.hasPermission('ViewMyTasks');\r\n this.canViewAllRemediations = this.securityService.hasPermission('ViewAllRemediations');\r\n this.canViewMyRemediations = this.securityService.hasPermission('ViewMyRemediations');\r\n this.canViewMaps = this.securityService.hasPermission('ViewMaps');\r\n this.canViewPlans = this.securityService.hasPermission('ViewPlans');\r\n this.canFilter = this.canViewRequests || this.canViewResults;\r\n\r\n this.dashboardQueryFilters = new DashboardQueryFilters();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.router.navigateToRoute('dashboard', this.dashboardQueryFilters.getQueryParams());\r\n }\r\n\r\n handleClearFilters() {\r\n this.dashboardQueryFilters.reset();\r\n this.router.navigateToRoute('dashboard', this.dashboardQueryFilters.getQueryParams());\r\n }\r\n\r\n async refreshWidgetData() {\r\n const now = new Date();\r\n const dashboardQuery = this.dashboardQueryFilters.getQueryParams();\r\n const todaysDashboardQuery = Object.assign({}, dashboardQuery);\r\n todaysDashboardQuery.dateRangeOption = 'custom';\r\n todaysDashboardQuery.targetStartDate =\r\n this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(now);\r\n todaysDashboardQuery.targetEndDate =\r\n this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(now, true);\r\n\r\n this.statusQuery = {\r\n organizationIds: dashboardQuery.organizationIds,\r\n dateRangeOption: dashboardQuery.dateRangeOption,\r\n targetStartDate: dashboardQuery.targetStartDate,\r\n targetEndDate: dashboardQuery.targetEndDate,\r\n };\r\n\r\n this.testResultListQuery = {\r\n outcomeStatus: OutcomeStatus.ALL,\r\n dateRangeOption: dashboardQuery.dateRangeOption,\r\n targetStartDate: dashboardQuery.targetStartDate,\r\n targetEndDate: dashboardQuery.targetEndDate,\r\n };\r\n\r\n await Promise.all([\r\n this.refreshRequestChartData(dashboardQuery),\r\n this.refreshResultChartData(dashboardQuery),\r\n this.refreshMyTaskData(todaysDashboardQuery, dashboardQuery),\r\n this.refreshTaskManagementData(todaysDashboardQuery, dashboardQuery),\r\n this.refreshMyRemediationData(dashboardQuery.organizationIds),\r\n this.refreshRemediationManagementData(dashboardQuery.organizationIds),\r\n ]);\r\n }\r\n\r\n generateStatusLinkUrl({ customerRequestStatus = null } = {}) {\r\n const statusQuery = this.statusQuery;\r\n statusQuery.customerRequestStatus = customerRequestStatus;\r\n\r\n return this.router.generate('status', statusQuery);\r\n }\r\n\r\n generateTestResultLinkUrl(outcome: OutcomeStatus) {\r\n const testResultQuery = this.testResultListQuery;\r\n testResultQuery.outcomeStatus = outcome;\r\n\r\n return this.router.generate('test-results-list', testResultQuery);\r\n }\r\n\r\n async refreshRequestChartData(dashboardQuery: DashboardQuery) {\r\n if (!this.canViewRequests) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var requestStatusCounts = await this.requestService.getRequestStatusCounts(\r\n dashboardQuery,\r\n );\r\n\r\n var maxValue = requestStatusCounts.reduce(\r\n (sum, requestStatusCount) => sum + requestStatusCount.count,\r\n 0,\r\n );\r\n var buildRequestStatusDatapoint = (requestStatus, label, dataType, backgroundColor) => {\r\n var requestStatusCount = requestStatusCounts.find(\r\n (e) => e.requestStatus === requestStatus,\r\n );\r\n var value = requestStatusCount ? requestStatusCount.count : 0;\r\n var percent = maxValue === 0 ? 0 : value / maxValue;\r\n\r\n return {\r\n value,\r\n label,\r\n dataType,\r\n maxValue,\r\n backgroundColor,\r\n percent,\r\n url: this.generateStatusLinkUrl({\r\n customerRequestStatus: label,\r\n }),\r\n };\r\n };\r\n\r\n this.requestChartLinkUrl = this.generateStatusLinkUrl();\r\n this.requestChartData = {\r\n maxValue,\r\n datapoints: [\r\n buildRequestStatusDatapoint(\r\n 'Submitted',\r\n 'Submitted',\r\n 'submitted',\r\n 'rgba(171,171,173,.35)',\r\n ),\r\n buildRequestStatusDatapoint('Received', 'Received', 'received', '#cc2350'),\r\n buildRequestStatusDatapoint(\r\n 'Processing',\r\n 'Processing',\r\n 'processing',\r\n '#9fd0cb',\r\n ),\r\n buildRequestStatusDatapoint('Completed', 'Completed', 'completed', '#25d925'),\r\n ],\r\n };\r\n } catch (error) {\r\n this.logger.error('Error occurred while loading request chart data.', error);\r\n this.requestChartData = {\r\n errorMessage: 'Error loading chart data',\r\n };\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async refreshResultChartData(dashboardQuery: DashboardQuery) {\r\n if (!this.canViewResults) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n const { organizationIds, targetStartDate, targetEndDate } = dashboardQuery;\r\n var testResultCounts = await this.testService.getTestResultCounts({\r\n organizationIds,\r\n targetStartDate,\r\n targetEndDate,\r\n });\r\n\r\n var maxValue = testResultCounts.reduce(\r\n (sum, testResultCount) => sum + testResultCount.count,\r\n 0,\r\n );\r\n var buildTestResultDatapoint = (passed, label, dataType, backgroundColor) => {\r\n var testResultCount = testResultCounts.find((e) => e.passed === passed);\r\n var value = testResultCount ? testResultCount.count : 0;\r\n var percent = maxValue === 0 ? 0 : value / maxValue;\r\n return {\r\n value,\r\n label,\r\n dataType,\r\n maxValue,\r\n backgroundColor,\r\n percent,\r\n url: this.generateTestResultLinkUrl(label),\r\n };\r\n };\r\n\r\n this.resultChartLinkUrl = this.generateTestResultLinkUrl(OutcomeStatus.ALL);\r\n this.resultChartData = {\r\n maxValue,\r\n datapoints: [\r\n buildTestResultDatapoint(null, 'Incomplete', 'submitted', '#79686d'),\r\n buildTestResultDatapoint(true, 'Pass', 'negative', '#25d925'),\r\n buildTestResultDatapoint(false, 'Fail', 'positive', '#c00'),\r\n ],\r\n };\r\n } catch (error) {\r\n this.logger.error('Error occurred while loading test result chart data.', error);\r\n this.resultChartData = { errorMessage: 'Error loading chart data' };\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async refreshMyTaskData(todaysDashboardQuery: DashboardQuery, dashboardQuery: DashboardQuery) {\r\n if (!this.canViewMyTasks) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n todaysDashboardQuery.onlyAssignedToMe = true;\r\n dashboardQuery.onlyAssignedToMe = true;\r\n const [taskCountsToday, taskCountsWeek] = await Promise.all([\r\n this.taskService.getTaskCounts(todaysDashboardQuery),\r\n this.taskService.getTaskCounts(dashboardQuery),\r\n ]);\r\n\r\n this.myTaskCountsToday = taskCountsToday;\r\n this.myTaskCountsWeek = taskCountsWeek;\r\n } catch (error) {\r\n this.logger.error('Error occurred while loading My Task widget data.', error);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async refreshTaskManagementData(\r\n todaysDashboardQuery: DashboardQuery,\r\n dashboardQuery: DashboardQuery,\r\n ) {\r\n if (!this.canViewAllTasks) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n todaysDashboardQuery.onlyAssignedToMe = false;\r\n dashboardQuery.onlyAssignedToMe = false;\r\n const [taskCountsToday, taskCountsWeek, criticalTaskCounts] = await Promise.all([\r\n this.taskService.getTaskCounts(todaysDashboardQuery),\r\n this.taskService.getTaskCounts(dashboardQuery),\r\n this.taskService.getCriticalTaskCounts(dashboardQuery.organizationIds),\r\n ]);\r\n\r\n this.taskCountsToday = taskCountsToday;\r\n this.taskCountsWeek = taskCountsWeek;\r\n this.criticaltaskCounts = criticalTaskCounts;\r\n } catch (error) {\r\n this.logger.error('Error occurred while loading Task Management widget data.', error);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async refreshMyRemediationData(organizationIds: number[]) {\r\n if (!this.canViewAllRemediations) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.myRemediationCounts = (await this.remediationService.getRemediationCounts(\r\n organizationIds,\r\n true,\r\n )) as unknown as number;\r\n } catch (error) {\r\n this.logger.error('Error occurred while loading My Remediations widget data.', error);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async refreshRemediationManagementData(organizationIds: number[]) {\r\n if (!this.canViewAllRemediations) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.remediationCounts = (await this.remediationService.getRemediationCounts(\r\n organizationIds,\r\n false,\r\n )) as unknown as number;\r\n } catch (error) {\r\n this.logger.error(\r\n 'Error occurred while loading Remediation Management widget data.',\r\n error,\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async canActivate(_params: TestResultListQuery, routeConfig) {\r\n const isWidgetDashboardEnabled = await this.organizationService.checkConfigurationFlag(\r\n 'enableWidgetDashboard',\r\n );\r\n if (isWidgetDashboardEnabled) return new Redirect('dashboard-widgets');\r\n\r\n return this.dashboardQueryFilters.ensureSingleApplyFilterHandler(routeConfig);\r\n }\r\n\r\n activate(params: DashboardQuery) {\r\n // Short circuit the loading of the dashboard if the user is going to be redirect away.\r\n if (this.securityService.pendingRedirectAfterlogin) return;\r\n\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe('filters.apply', () =>\r\n this.handleApplyFilters(),\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe('filters.clear', () =>\r\n this.handleClearFilters(),\r\n );\r\n this.dashboardQueryFilters.setFilterValues(params);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n const [currentUser, newsItems, currentUserOrganizations, maps, dashboardLinks] =\r\n await Promise.all([\r\n this.securityService.getEffectiveUser(),\r\n this.newsItemService.getNewsItems({ forDashboard: true }),\r\n this.canFilter\r\n ? this.userService.getCurrentUserOrganizations()\r\n : Promise.resolve([]),\r\n this.canViewMaps ? this.mapService.getMaps([]) : [],\r\n this.dashboardService.getDashboardLinks(),\r\n this.refreshWidgetData(),\r\n ]);\r\n\r\n this.taskStatuses = this.taskService.getTaskStatuses() as unknown as TaskStatus[];\r\n this.remediationStatuses =\r\n this.remediationService.getRemediationStatuses() as unknown as RemediationStatus[];\r\n this.currentUser = currentUser;\r\n this.newsItems = newsItems;\r\n this.organizations = currentUserOrganizations;\r\n this.dashboardLinks = dashboardLinks as unknown as DashboardLinks;\r\n\r\n // grab data to drive the map/plan filter\r\n let mapSummaries = maps as unknown as MapSummary[];\r\n let mapIds = mapSummaries.map((m) => m.id);\r\n let planSummaries =\r\n this.canViewPlans && mapIds.length > 0\r\n ? ((await this.planService.getPlans(mapIds)) as unknown as PlanSummary[])\r\n : [];\r\n\r\n this.mapSelectorOptions = MapSummaryConverter.toSelectorOptions(mapSummaries);\r\n this.planSelectorOptions = PlanSummaryConverter.toSelectorOptions(\r\n planSummaries,\r\n mapSummaries,\r\n );\r\n } catch (error) {\r\n this.logger.error('Error loading dashboard.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Dashboard',\r\n 'An error occurred while loading the dashbord. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n navigateToPricing() {\r\n if (!this.currentUser || !this.currentUser.organizationId) return;\r\n\r\n this.router.navigateToRoute('test-method-list', {\r\n id: this.currentUser.organizationId,\r\n });\r\n }\r\n\r\n private mapTaskListQuery(): TaskListQuery {\r\n const dashboardQuery = this.dashboardQueryFilters.getQueryParams();\r\n return {\r\n mapId: dashboardQuery.mapId,\r\n planId: dashboardQuery.planId,\r\n mapIds: dashboardQuery.mapIds,\r\n planIds: dashboardQuery.planIds,\r\n dateRangeOption: dashboardQuery.dateRangeOption,\r\n targetStartDate: dashboardQuery.targetStartDate,\r\n targetEndDate: dashboardQuery.targetEndDate,\r\n };\r\n }\r\n\r\n navigateToMyTodaysFilteredTasks(taskStatusCodes?: string[]) {\r\n const now = new Date();\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.dateRangeOverride = true;\r\n taskListQuery.dateRangeOption = 'custom';\r\n taskListQuery.targetStartDate =\r\n this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(now);\r\n taskListQuery.targetEndDate = this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(\r\n now,\r\n true,\r\n );\r\n taskListQuery.onlyAssignedToMe = true;\r\n\r\n if (taskStatusCodes && taskStatusCodes.length > 0) {\r\n taskListQuery.taskStatusIds = taskStatusCodes.map(\r\n (code) => this.taskStatuses.find((s) => s.code === code).id,\r\n );\r\n }\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToMyFilteredTasks() {\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.onlyAssignedToMe = true;\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToAllTodaysFilteredTasks(taskStatusCodes?: string[]) {\r\n const now = new Date();\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.dateRangeOverride = true;\r\n taskListQuery.dateRangeOption = 'custom';\r\n taskListQuery.targetStartDate =\r\n this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(now);\r\n taskListQuery.targetEndDate = this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(\r\n now,\r\n true,\r\n );\r\n taskListQuery.onlyAssignedToMe = false;\r\n\r\n if (taskStatusCodes && taskStatusCodes.length > 0) {\r\n taskListQuery.taskStatusIds = taskStatusCodes.map(\r\n (code) => this.taskStatuses.find((s) => s.code === code).id,\r\n );\r\n }\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToAllFilteredTasks(isAssigned?: string) {\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.isAssigned = isAssigned;\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToCriticalUnassignedFilteredTasksThroughToday() {\r\n const now = new Date();\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.dateRangeOverride = true;\r\n taskListQuery.dateRangeOption = 'custom';\r\n taskListQuery.targetStartDate = null;\r\n taskListQuery.targetEndDate = this.dashboardQueryFilters.dateRangeQueryFilters.formatDate(\r\n now,\r\n true,\r\n );\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToCriticalOverdueFilteredTasksThroughNow() {\r\n const taskListQuery = this.mapTaskListQuery();\r\n taskListQuery.dateRangeOverride = true;\r\n taskListQuery.dateRangeOption = 'custom';\r\n taskListQuery.targetStartDate = null;\r\n taskListQuery.targetEndDate = moment().format();\r\n taskListQuery.enableTimeFilter = true;\r\n\r\n const criticalStatuses = this.taskStatuses.filter(\r\n (ts) => ts.code === 'NotStarted' || ts.code === 'InProgress',\r\n );\r\n taskListQuery.taskStatusIds = criticalStatuses.map((cs) => cs.id);\r\n\r\n this.router.navigateToRoute('task-list', taskListQuery);\r\n }\r\n\r\n navigateToRemediationList({\r\n onlyAssignedToMe = false,\r\n isAssigned = null,\r\n remediationStatusCodes = null,\r\n } = {}) {\r\n this.router.navigateToRoute('remediation-list', {\r\n dateRangeOption: 'custom',\r\n onlyAssignedToMe,\r\n isAssigned,\r\n remediationStatusIds: (remediationStatusCodes || []).map(\r\n (code) => this.remediationStatuses.find((s) => s.code === code).id,\r\n ),\r\n });\r\n }\r\n\r\n canDeactivate() {\r\n this.applyFiltersSubscription?.dispose();\r\n this.clearFiltersSubscription?.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { Container } from 'aurelia-framework';\r\nimport DialogPresenter from '../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../infrastructure/logger';\r\nimport PageContext from '../infrastructure/page-context';\r\n\r\n// NOTE: This must be submitted manually as the try/catch will not handle any server side errors.\r\nexport function submitCustomCertiticateForm(customCoaForm: HTMLFormElement) {\r\n const dialogPresenter = Container.instance.get(DialogPresenter);\r\n const logger = Container.instance.get(Logger);\r\n const pageContext = Container.instance.get(PageContext);\r\n\r\n pageContext.isLoading = true;\r\n\r\n const xhr = new XMLHttpRequest();\r\n xhr.responseType = 'blob';\r\n xhr.open('POST', '/api/results/custom-certificates', true);\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n const type = xhr.getResponseHeader('Content-Type');\r\n const contentDispositionHeader = xhr.getResponseHeader('Content-Disposition');\r\n const blob = new Blob([xhr.response], { type });\r\n\r\n const regExpFileName = /filename=(?.*)/;\r\n const fileName: string | null =\r\n regExpFileName.exec(contentDispositionHeader)?.groups?.filename ?? null;\r\n\r\n let a = document.createElement('a');\r\n document.body.appendChild(a);\r\n let url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = fileName;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n\r\n pageContext.isLoading = false;\r\n pageContext.showSuccessOverlay('Certificate download started successfully.');\r\n } else {\r\n pageContext.isLoading = false;\r\n logger.error(\r\n 'Error downloading certificate.',\r\n 'A server side error occured while trying to download custom cert',\r\n );\r\n dialogPresenter.showAlert(\r\n 'Error Downloading Certificate',\r\n 'An error occurred while downloading the certificate. Please try again later.',\r\n );\r\n }\r\n }\r\n };\r\n\r\n const formData = new FormData(customCoaForm);\r\n xhr.send(formData);\r\n}\r\n","import { ExportTaskCollectionTemplateColumn } from './export-task-collection-template-column';\r\nimport { ExportTaskCollectionTemplateConfiguration } from './export-task-collection-template-configuration';\r\nimport { emptyExportTaskCollectionTemplateFooterOptions, ExportTaskCollectionTemplateFooterOptions } from './export-task-collection-template-footer-options';\r\nimport { emptyExportTaskCollectionTemplateFormattingOptions, ExportTaskCollectionTemplateFormattingOptions } from './export-task-collection-template-formatting-options';\r\nimport { emptyExportTaskCollectionTemplateHeaderOptions, ExportTaskCollectionTemplateHeaderOptions } from './export-task-collection-template-header-options';\r\n\r\nexport interface ExportTaskCollectionTemplate {\r\n id: number;\r\n isActive: boolean;\r\n organizationConfigurations: ExportTaskCollectionTemplateConfiguration[];\r\n columns: ExportTaskCollectionTemplateColumn[];\r\n formattingOptions: ExportTaskCollectionTemplateFormattingOptions;\r\n headerOptions?: ExportTaskCollectionTemplateHeaderOptions;\r\n footerOptions?: ExportTaskCollectionTemplateFooterOptions;\r\n}\r\n\r\nexport const emptyExportTaskCollectionTemplate = (): ExportTaskCollectionTemplate => ({\r\n id: 0,\r\n isActive: false,\r\n organizationConfigurations: [],\r\n columns: [],\r\n formattingOptions: emptyExportTaskCollectionTemplateFormattingOptions(),\r\n headerOptions: emptyExportTaskCollectionTemplateHeaderOptions(),\r\n footerOptions: emptyExportTaskCollectionTemplateFooterOptions(),\r\n})\r\n","import { DialogService } from 'aurelia-dialog';\r\nimport { inject } from 'aurelia-framework';\r\nimport { AgGridDialog } from './ag-grid-dialog';\r\nimport Alert from './alert';\r\nimport Confirmation from './confirmation';\r\nimport { DataGridReorderDialog } from './data-grid-reorder-dialog';\r\nimport ExportableFieldSelector from './exportable-field-selector';\r\nimport LabelSelector from './label-selector';\r\nimport NameValueItemSelector from './name-value-item-selector';\r\nimport UserSelector from './user-selector';\r\n\r\n@inject(DialogService)\r\nexport default class DialogPresenter {\r\n constructor(dialogService) {\r\n this.dialogService = dialogService;\r\n }\r\n\r\n showAlert(title, message, okButtonTitle) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: Alert,\r\n model: {\r\n title,\r\n message,\r\n okButtonTitle,\r\n },\r\n })\r\n .whenClosed((response) => resolve());\r\n });\r\n }\r\n\r\n showConfirmation(title, message, okButtonTitle, cancelButtonTitle) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: Confirmation,\r\n model: {\r\n title,\r\n message,\r\n okButtonTitle,\r\n cancelButtonTitle,\r\n },\r\n })\r\n .whenClosed((response) => resolve(!response.wasCancelled));\r\n });\r\n }\r\n\r\n showLoseChangesConfirmation() {\r\n return this.showConfirmation(\r\n 'Lose Changes?',\r\n 'You may have unsaved changes. Are you sure you want to leave the page?',\r\n 'Leave',\r\n 'Stay',\r\n );\r\n }\r\n\r\n showUserSelector(title) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: UserSelector,\r\n model: { title: title || 'Select a user' },\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n\r\n showExportableFieldSelector(title, fields, selected) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: ExportableFieldSelector,\r\n model: {\r\n title: title || 'Select fields to be included with the export',\r\n fields: fields,\r\n selected: selected,\r\n },\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n\r\n showLabelSelector(title, labelTemplateType, organizationId) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: LabelSelector,\r\n model: {\r\n title: title || 'Select a label',\r\n labelTemplateType,\r\n organizationId,\r\n },\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n\r\n showNameValueItemSelector(\r\n title,\r\n description,\r\n placeholderText,\r\n items,\r\n captionPropertyName,\r\n valuePropertyName,\r\n ) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: NameValueItemSelector,\r\n model: {\r\n title,\r\n description,\r\n placeholderText,\r\n items,\r\n captionPropertyName,\r\n valuePropertyName,\r\n },\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n\r\n showClientVersionReloadDialog() {\r\n return this.showConfirmation(\r\n 'New Version Available',\r\n 'A new version of the portal is available. To have the best experience, you should reload the browser with the latest version.',\r\n 'Reload Browser',\r\n 'Cancel',\r\n );\r\n }\r\n\r\n showDataGridReorderDialog(model) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: DataGridReorderDialog,\r\n model,\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n\r\n showAgGridDialog(model) {\r\n return new Promise((resolve) => {\r\n this.dialogService\r\n .open({\r\n viewModel: AgGridDialog,\r\n model,\r\n })\r\n .whenClosed((response) => resolve(response));\r\n });\r\n }\r\n}\r\n","import { ColDef, ColGroupDef, GridOptions } from 'ag-grid-community';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport {\r\n agFormatDateAndTimeToLocale,\r\n agFormatTaskCollectionType,\r\n} from 'infrastructure/ag-grid/ag-value-formatters';\r\n\r\nconst colDefs: (ColDef | ColGroupDef)[] = [\r\n { headerName: 'Sample Id', field: 'sampleExternalId' },\r\n {\r\n headerName: 'Collected',\r\n field: 'sampleCollectionDate',\r\n valueFormatter: agFormatDateAndTimeToLocale,\r\n sort: 'desc',\r\n },\r\n {\r\n headerName: 'Collection Type',\r\n field: 'collectionType',\r\n valueFormatter: agFormatTaskCollectionType,\r\n },\r\n { headerName: 'Remediation', field: 'remediationName' },\r\n { headerName: 'Root Cause', field: 'RemediationRootCause' },\r\n { headerName: 'Test Method', field: 'testMethod' },\r\n { headerName: 'Quantitative Result', field: 'quantitativeResult' },\r\n { headerName: 'Qualitative Result', field: 'qualitativeResult' },\r\n\r\n { field: 'sampleId', hide: true },\r\n { field: 'testId', hide: true },\r\n { field: 'pointId', hide: true },\r\n { field: 'remediationId', hide: true },\r\n];\r\n\r\nconst baseOptions: GridOptions = {\r\n columnDefs: colDefs,\r\n};\r\n\r\n// Don't set domLayout: 'auotHeight' as the dialog window sets the height.\r\nconst remediationPointTestHistoryGridOptions: GridOptions = AgStatefulGridBuilder.create(\r\n baseOptions,\r\n)\r\n .setDefaults()\r\n .addStatefulness('remediation-point-test-history-grid')\r\n .build();\r\n\r\nexport { remediationPointTestHistoryGridOptions };\r\n","import {\r\n CellEditingStoppedEvent,\r\n ColDef,\r\n GetMainMenuItemsParams,\r\n GridApi,\r\n GridOptions,\r\n MenuItemDef,\r\n} from 'ag-grid-community';\r\nimport { RichSelectModule } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { agGridSetPreferences } from 'infrastructure/ag-grid/ag-localstorage-helper';\r\nimport { AgDateTimeEditorTypes } from './ag-grid-components/ag-datetime-editor-types';\r\nimport { SampleSegmentationGridPreferences } from './ag-grid-components/sample-segmentation-grid-preferences';\r\n\r\nconst setFocusedCell = (event: CellEditingStoppedEvent) => {\r\n const { api, node, column, colDef, columnApi, rowIndex } = event;\r\n const isLastRow = api.getDisplayedRowCount() - 1 === rowIndex;\r\n if (!node.lastChild || !isLastRow) {\r\n return;\r\n }\r\n\r\n const { colId } = colDef;\r\n const cols = columnApi.getAllColumns();\r\n const colIndex = cols.findIndex((c) => c.getColId() === colId);\r\n if (cols.length === colIndex + 1) {\r\n return;\r\n }\r\n\r\n api.setFocusedCell(0, cols[colIndex + 1].getColId());\r\n};\r\n\r\nconst setDateTimeEditor = (api: GridApi, preferences: SampleSegmentationGridPreferences) => {\r\n const colDefs: ColDef[] = api.getColumnDefs();\r\n agGridSetPreferences(preferences);\r\n api.setColumnDefs(colDefs);\r\n};\r\n\r\nconst getMainMenuItems = (params: GetMainMenuItemsParams): (string | MenuItemDef)[] => {\r\n const { defaultItems, api, context } = params;\r\n const colId = params.column.getId();\r\n if (colId !== 'collection_date') {\r\n return defaultItems;\r\n }\r\n\r\n const { preferences }: { preferences: SampleSegmentationGridPreferences } = context;\r\n const collectionDateMenuItems: (MenuItemDef | string)[] = defaultItems.slice(0);\r\n\r\n collectionDateMenuItems.push({\r\n name: 'Date/Time Editor',\r\n subMenu: [\r\n {\r\n name: AgDateTimeEditorTypes.PICKER,\r\n action: () => {\r\n preferences.dateTimeEditor = AgDateTimeEditorTypes.PICKER;\r\n setDateTimeEditor(api, preferences);\r\n },\r\n checked: preferences.dateTimeEditor === AgDateTimeEditorTypes.PICKER,\r\n },\r\n {\r\n name: AgDateTimeEditorTypes.MASK,\r\n action: () => {\r\n preferences.dateTimeEditor = AgDateTimeEditorTypes.MASK;\r\n setDateTimeEditor(api, preferences);\r\n },\r\n checked: preferences.dateTimeEditor === AgDateTimeEditorTypes.MASK,\r\n },\r\n ],\r\n });\r\n\r\n return collectionDateMenuItems;\r\n};\r\n\r\nconst segmentationSampleGridOptions: GridOptions = {\r\n frameworkComponents: {\r\n selectEditorComponent: RichSelectModule,\r\n },\r\n defaultColDef: {\r\n flex: 1,\r\n minWidth: 100,\r\n sortable: true,\r\n resizable: true,\r\n },\r\n context: {\r\n preferences: new SampleSegmentationGridPreferences(),\r\n },\r\n getMainMenuItems,\r\n animateRows: true,\r\n enterMovesDown: true,\r\n enterMovesDownAfterEdit: true,\r\n rowSelection: 'multiple',\r\n suppressRowClickSelection: true,\r\n enableRangeSelection: true,\r\n enableFillHandle: true,\r\n fillHandleDirection: 'y',\r\n};\r\n\r\nexport { segmentationSampleGridOptions };\r\n","import { DialogService } from 'aurelia-dialog';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Aurelia, inject, PLATFORM } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { Router } from 'aurelia-router';\r\nimport ApplicationInsightsService from 'infrastructure/application-insights-service';\r\nimport Cookies from 'js-cookie';\r\nimport ApplicationModuleService from '../application-modules/application-module-service';\r\nimport Logger from '../infrastructure/logger';\r\nimport RoleService from '../roles/role-service';\r\n\r\n@inject(\r\n Aurelia,\r\n Router,\r\n HttpClient,\r\n EventAggregator,\r\n DialogService,\r\n Logger,\r\n RoleService,\r\n ApplicationModuleService,\r\n ApplicationInsightsService,\r\n)\r\nexport default class SecurityService {\r\n constructor(\r\n aurelia,\r\n router,\r\n httpClient,\r\n eventAggregator,\r\n dialogService,\r\n logger,\r\n roleService,\r\n applicationModuleService,\r\n applicationInsightsService,\r\n ) {\r\n this.aurelia = aurelia;\r\n this.router = router;\r\n this.httpClient = httpClient;\r\n this.eventAggregator = eventAggregator;\r\n this.dialogService = dialogService;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'security-service';\r\n\r\n this.applicationInsightsService = applicationInsightsService;\r\n\r\n this.roleService = roleService;\r\n this.applicationModuleService = applicationModuleService;\r\n this.startSessionExpirationChecks();\r\n }\r\n\r\n startSessionExpirationChecks() {\r\n window.setInterval(() => {\r\n var session = this.getCurrentSession();\r\n if (!session) return;\r\n\r\n if (new Date(session.expiration) > new Date()) return;\r\n\r\n var navigateToLogin =\r\n !!localStorage.getItem('impersonatedUser') ||\r\n !!localStorage.getItem('workingUnderOrganization');\r\n\r\n this.logout(navigateToLogin);\r\n\r\n if (!navigateToLogin)\r\n this.dialogService.open({\r\n viewModel: PLATFORM.moduleName('security/login-dialog'),\r\n model: { sessionExpired: true },\r\n });\r\n }, 5000);\r\n }\r\n\r\n login(username, password, verifyIdentityToken) {\r\n return this.httpClient\r\n .post('sessions/', { username, password, verifyIdentityToken })\r\n .then((session) => {\r\n this.applicationInsightsService.setUserId(username, session.user.id);\r\n\r\n this.setCurrentSession(session);\r\n\r\n if (!session.user.isInternal)\r\n return this.refreshCurrentPermissions().then(() => {\r\n this.eventAggregator.publish('user.login');\r\n });\r\n });\r\n }\r\n\r\n async refreshCurrentPermissions() {\r\n var currentPermissions = await this.roleService.getCurrentPermissions();\r\n localStorage.setItem('currentPermissions', JSON.stringify(currentPermissions));\r\n }\r\n\r\n initResetPassword(email) {\r\n return this.httpClient.post(`password-reset/tokens?email=${email}`);\r\n }\r\n\r\n resetPassword(token, newPassword, newPasswordConfirm) {\r\n return this.httpClient.patch(`password-reset/tokens/${token}`, {\r\n newPassword,\r\n newPasswordConfirm,\r\n });\r\n }\r\n\r\n logout(navigateToLogin) {\r\n if (this.isImpersonating()) {\r\n localStorage.removeItem('query-filter.date-range');\r\n }\r\n localStorage.removeItem('currentSession');\r\n localStorage.removeItem('currentPermissions');\r\n localStorage.removeItem('currentUser');\r\n localStorage.removeItem('impersonatedUser');\r\n localStorage.removeItem('workingUnderOrganization');\r\n Cookies.remove('impersonatedUserId');\r\n Cookies.remove('workingUnderOrganizationId');\r\n\r\n this.httpClient\r\n .delete('sessions/current')\r\n .then(() => {\r\n this.eventAggregator.publish('user.logout');\r\n\r\n if (navigateToLogin) this.navigateToLoginScreen();\r\n })\r\n .catch((error) => {\r\n this.logger.error('Error logging out.', error);\r\n });\r\n\r\n this.applicationInsightsService.clearUserId();\r\n }\r\n\r\n // The global-message-notifier component will not receive the initial event because it hasn't subscribed in time\r\n // This event is for all subsequent calls when the session has expired.\r\n // The initial value is called directly from local storage in the components ctor\r\n setCurrentSession(session) {\r\n const { user } = session;\r\n this.eventAggregator.publish('user.messageCountChanged', { count: user.messageCount });\r\n localStorage.setItem('currentSession', JSON.stringify(session));\r\n }\r\n\r\n getCurrentSession() {\r\n return this.parseLocalStorage('currentSession');\r\n }\r\n\r\n getCurrentSessionUser() {\r\n return this.parseLocalStorage('currentSession').user;\r\n }\r\n\r\n getCurrentPermissions() {\r\n return this.parseLocalStorage('currentPermissions');\r\n }\r\n\r\n parseLocalStorage(key) {\r\n var valueString = localStorage.getItem(key);\r\n if (!valueString) return null;\r\n\r\n try {\r\n return JSON.parse(valueString);\r\n } catch (error) {\r\n this.logger.warn(\r\n `Failed to parse local storage value for '${key}': ${valueString}`,\r\n error,\r\n { key, valueString },\r\n );\r\n return null;\r\n }\r\n }\r\n\r\n isCurrentUserLoggedIn() {\r\n var session = this.getCurrentSession();\r\n if (!session) return null;\r\n\r\n if (new Date(session.expiration) < new Date()) {\r\n this.logout();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n hasPermission(permissionCode) {\r\n var currentPermissions = this.getCurrentPermissions() || [];\r\n if (currentPermissions.length === 0) return false;\r\n\r\n return !!currentPermissions.find((p) => p.code === permissionCode);\r\n }\r\n\r\n hasApplicationModule(applicationModuleId) {\r\n var session = this.getCurrentSession();\r\n if (!session || !session.user || !session.user.applicationModules) return false;\r\n\r\n return !!session.user.applicationModules.find((m) => m.id === applicationModuleId);\r\n }\r\n\r\n isCurrentUserInternal() {\r\n var currentSession = this.getCurrentSession();\r\n if (!currentSession) return false;\r\n\r\n return currentSession.user.isInternal;\r\n }\r\n\r\n isCurrentUserGlobalMessenger() {\r\n var currentSession = this.getCurrentSession();\r\n if (!currentSession) return false;\r\n\r\n return currentSession.user.isInternal && currentSession.user.isGlobalMessenger;\r\n }\r\n\r\n canModifyCustomerData() {\r\n var currentSession = this.getCurrentSession();\r\n if (!currentSession) return false;\r\n\r\n return currentSession.user.canModifyCustomerData;\r\n }\r\n\r\n tryAddAuthentication(message) {\r\n var session = this.getCurrentSession();\r\n if (session) message.headers.add('Authorization', `Bearer ${session.token}`);\r\n }\r\n\r\n tryAddImpersonation(message) {\r\n var impersonatedUser = this.getImpersonatedUser();\r\n\r\n if (!impersonatedUser || !impersonatedUser.id) return;\r\n\r\n var impersonatedUserId = parseInt(impersonatedUser.id);\r\n if (!impersonatedUserId) return;\r\n\r\n message.headers.add('X-Impersonated-User-Id', impersonatedUserId);\r\n }\r\n\r\n tryAddWorkingUnderOrganization(message) {\r\n const workingUnderOrganization = this.getWorkingUnderOrganization();\r\n\r\n if (!workingUnderOrganization || !workingUnderOrganization.id) return;\r\n\r\n const impersonatedOrgId = parseInt(workingUnderOrganization.id);\r\n if (!impersonatedOrgId) return;\r\n\r\n message.headers.add('X-Working-Under-Organization-Id', impersonatedOrgId);\r\n }\r\n\r\n tryUpdateAuthentication(message) {\r\n if (!message.headers) return;\r\n\r\n if (!message.headers.has('x-set-authorization-token')) return;\r\n\r\n var token = message.headers.get('x-set-authorization-token');\r\n var expiration = new Date(JSON.parse(atob(token.split('.')[1])).exp * 1000);\r\n var session = this.getCurrentSession();\r\n if (!session) return;\r\n\r\n session.token = token;\r\n session.expiration = expiration;\r\n this.setCurrentSession(session);\r\n this.httpClient.put('sessions/current');\r\n }\r\n\r\n navigateToLoginScreen() {\r\n this.aurelia.setRoot(PLATFORM.moduleName('security/unauthenticated-app'));\r\n }\r\n\r\n navigateToApp() {\r\n this.aurelia.setRoot(PLATFORM.moduleName('app')).then(() => {\r\n if (!this.redirectAfterLoginFragment) return;\r\n\r\n this.router.navigate(this.redirectAfterLoginFragment);\r\n this.redirectAfterLoginFragment = null;\r\n });\r\n }\r\n\r\n navigateToRoot() {\r\n var loggedIn = this.isCurrentUserLoggedIn();\r\n if (loggedIn) {\r\n this.navigateToApp();\r\n return;\r\n }\r\n\r\n this.redirectAfterLoginFragment = window.location.hash.substring(1);\r\n this.navigateToLoginScreen();\r\n }\r\n\r\n get pendingRedirectAfterlogin() {\r\n return !!this.redirectAfterLoginFragment;\r\n }\r\n\r\n getEffectiveUser() {\r\n if (!!localStorage.getItem('impersonatedUser')) return this.getImpersonatedUser();\r\n\r\n const workingUnderOrganization = this.getWorkingUnderOrganization();\r\n if (workingUnderOrganization) {\r\n const currentUser = this.getCurrentSessionUser();\r\n currentUser.organizationId = workingUnderOrganization.id;\r\n\r\n return currentUser;\r\n }\r\n\r\n return this.getCurrentSessionUser();\r\n }\r\n\r\n isImpersonating() {\r\n return !!localStorage.getItem('impersonatedUser');\r\n }\r\n\r\n isWorkingUnderOrganization() {\r\n return !!localStorage.getItem('workingUnderOrganization');\r\n }\r\n\r\n getImpersonatedUser() {\r\n return this.parseLocalStorage('impersonatedUser');\r\n }\r\n\r\n getWorkingUnderOrganization() {\r\n return this.parseLocalStorage('workingUnderOrganization');\r\n }\r\n\r\n getUserMessageCount() {\r\n var currentSession = this.getCurrentSession();\r\n if (!currentSession) return false;\r\n\r\n return currentSession.user.messageCount;\r\n }\r\n\r\n setUserMessageCount(count) {\r\n var currentSession = this.getCurrentSession();\r\n if (!currentSession) return false;\r\n\r\n currentSession.user.messageCount = count;\r\n this.setCurrentSession(currentSession);\r\n }\r\n\r\n async refreshApplicationModules(orgId) {\r\n var applicationModules = await this.applicationModuleService.getApplicationModules(orgId);\r\n const currentSession = this.getCurrentSession();\r\n currentSession.user.applicationModules = applicationModules;\r\n localStorage.setItem('currentSession', JSON.stringify(currentSession));\r\n }\r\n\r\n async startImpersonation(user) {\r\n Cookies.set('impersonatedUserId', user.id);\r\n localStorage.setItem('impersonatedUser', JSON.stringify(user));\r\n localStorage.removeItem('query-filter.date-range');\r\n\r\n await this.refreshApplicationModules(user.organizationId);\r\n await this.refreshCurrentPermissions();\r\n\r\n this.eventAggregator.publish('impersonation.start');\r\n }\r\n\r\n async startWorkingUnderOrganization(org) {\r\n Cookies.set('workingUnderOrganizationId', org.id);\r\n localStorage.setItem('workingUnderOrganization', JSON.stringify(org));\r\n\r\n await this.refreshApplicationModules(org.id);\r\n await this.refreshCurrentPermissions();\r\n\r\n this.eventAggregator.publish('impersonation.start');\r\n }\r\n\r\n stopImpersonation() {\r\n Cookies.remove('impersonatedUserId');\r\n Cookies.remove('workingUnderOrganizationId');\r\n localStorage.removeItem('impersonatedUser');\r\n localStorage.removeItem('workingUnderOrganization');\r\n localStorage.removeItem('currentPermissions');\r\n localStorage.removeItem('query-filter.date-range');\r\n\r\n const currentSession = this.getCurrentSession();\r\n currentSession.user.applicationModules = [];\r\n localStorage.setItem('currentSession', JSON.stringify(currentSession));\r\n\r\n this.eventAggregator.publish('impersonation.stop');\r\n }\r\n}\r\n","import { ColDef, GridOptions } from 'ag-grid-community';\r\ninterface AgStatefulGridOptionsBuilder {\r\n /**\r\n * Sets or overrides Grid Options\r\n * @example\r\n * defaultColDef: sortable, resizeable, filter, flex:1, enableValue\r\n * grid: suppressRowClickSelection\r\n *\r\n * @return The builder\r\n */\r\n setDefaults(): this;\r\n /**\r\n * Adds column, sorting, and filtering statefulness\r\n * @param gridKey The local storage key of the grid\r\n */\r\n addStatefulness(gridKey: string): this;\r\n withAutoHeight(): this;\r\n build(): GridOptions;\r\n}\r\n\r\nexport default class AgStatefulGridBuilder implements AgStatefulGridOptionsBuilder {\r\n private _gridOptions: GridOptions;\r\n private _defaultGridOptions: GridOptions;\r\n private _columnStateLocalStorageKey: string;\r\n private _pivotStateLocalStorageKey: string;\r\n private _minColumnStateColumnWidth: number;\r\n private _saveColumnStateDebounce: any;\r\n\r\n private constructor(gridOptions?: GridOptions) {\r\n this._gridOptions = gridOptions || {};\r\n this._minColumnStateColumnWidth = 50;\r\n this._defaultGridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n resizable: true,\r\n filter: true,\r\n enableValue: true,\r\n flex: 1,\r\n },\r\n suppressRowClickSelection: true,\r\n };\r\n }\r\n\r\n private overrideInvisibleColumnWidths(columnState) {\r\n columnState.forEach((col) => {\r\n if (col.width && col.width < this._minColumnStateColumnWidth) {\r\n delete col.width;\r\n }\r\n });\r\n\r\n return columnState;\r\n }\r\n\r\n private loadColumnStateFromLocalStorage(base) {\r\n const columnStateString = localStorage.getItem(this._columnStateLocalStorageKey);\r\n if (!columnStateString) {\r\n base?.call();\r\n return;\r\n }\r\n\r\n const columnState = JSON.parse(columnStateString);\r\n const pivotState = JSON.parse(localStorage.getItem(this._pivotStateLocalStorageKey));\r\n this.overrideInvisibleColumnWidths(columnState);\r\n this._gridOptions.columnApi.applyColumnState({\r\n state: columnState,\r\n applyOrder: true,\r\n });\r\n\r\n this._gridOptions.columnApi.setPivotMode(Boolean(pivotState));\r\n\r\n base?.call();\r\n }\r\n\r\n saveColumnStateToLocalStorage(base) {\r\n if (this._saveColumnStateDebounce) clearTimeout(this._saveColumnStateDebounce);\r\n\r\n this._saveColumnStateDebounce = setTimeout(() => {\r\n this._saveColumnStateDebounce = null;\r\n\r\n const columnState = this._gridOptions.columnApi.getColumnState();\r\n const isPivotMode = this._gridOptions.columnApi.isPivotMode();\r\n const trimmedColumnState = columnState.map((c) => ({\r\n colId: c.colId,\r\n sort: c.sort,\r\n sortIndex: c.sortIndex,\r\n width: c.width,\r\n pivot: c.pivot,\r\n pivotIndex: c.pivotIndex,\r\n rowGroup: c.rowGroup,\r\n rowGrouproupIndex: c.rowGroupIndex,\r\n }));\r\n localStorage.setItem(\r\n this._columnStateLocalStorageKey,\r\n JSON.stringify(trimmedColumnState),\r\n );\r\n localStorage.setItem(this._pivotStateLocalStorageKey, JSON.stringify(isPivotMode));\r\n }, 1000);\r\n\r\n base?.call();\r\n }\r\n\r\n setDefaults(): this {\r\n const mergedDefaultColDefs: ColDef = {\r\n ...this._gridOptions.defaultColDef,\r\n ...this._defaultGridOptions.defaultColDef,\r\n };\r\n const mergedGridOptions: GridOptions = {\r\n ...this._gridOptions,\r\n ...this._defaultGridOptions,\r\n };\r\n\r\n mergedGridOptions.defaultColDef = mergedDefaultColDefs;\r\n this._gridOptions = mergedGridOptions;\r\n\r\n return this;\r\n }\r\n\r\n addStatefulness(gridKey: string): this {\r\n this._columnStateLocalStorageKey = `column-state.${gridKey}`;\r\n this._pivotStateLocalStorageKey = this._columnStateLocalStorageKey + '.pivot';\r\n\r\n const {\r\n onGridReady,\r\n onColumnMoved,\r\n onColumnResized,\r\n onSortChanged,\r\n onColumnPivotModeChanged,\r\n onColumnPivotChanged,\r\n onColumnRowGroupChanged,\r\n } = this._gridOptions;\r\n this._gridOptions.onGridReady = () => this.loadColumnStateFromLocalStorage(onGridReady);\r\n this._gridOptions.onColumnMoved = () => this.saveColumnStateToLocalStorage(onColumnMoved);\r\n this._gridOptions.onColumnResized = () =>\r\n this.saveColumnStateToLocalStorage(onColumnResized);\r\n this._gridOptions.onSortChanged = () => this.saveColumnStateToLocalStorage(onSortChanged);\r\n this._gridOptions.onColumnPivotModeChanged = () =>\r\n this.saveColumnStateToLocalStorage(onColumnPivotModeChanged);\r\n this._gridOptions.onColumnPivotChanged = () =>\r\n this.saveColumnStateToLocalStorage(onColumnPivotChanged);\r\n this._gridOptions.onColumnRowGroupChanged = () =>\r\n this.saveColumnStateToLocalStorage(onColumnRowGroupChanged);\r\n\r\n return this;\r\n }\r\n\r\n withAutoHeight(): this {\r\n this._gridOptions.domLayout = 'autoHeight';\r\n return this;\r\n }\r\n\r\n static create(gridOptions?: GridOptions) {\r\n return new AgStatefulGridBuilder(gridOptions);\r\n }\r\n\r\n build(): GridOptions {\r\n return this._gridOptions;\r\n }\r\n}\r\n","import { autoinject, BindingEngine } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport {\r\n emptyExportTaskCollectionTemplate,\r\n ExportTaskCollectionTemplate,\r\n} from './export-task-collection-template';\r\nimport { ExportTaskCollectionTemplateColumn } from './export-task-collection-template-column';\r\nimport {\r\n emptyExportTaskCollectionTemplateConfiguration,\r\n ExportTaskCollectionTemplateConfiguration,\r\n} from './export-task-collection-template-configuration';\r\nimport { ExportTaskCollectionTemplateFooterOptions } from './export-task-collection-template-footer-options';\r\nimport { ExportTaskCollectionTemplateHeaderOptions } from './export-task-collection-template-header-options';\r\nimport ExportTaskCollectionTemplateService from './export-task-collection-template-service';\r\n@autoinject\r\nexport class ExportTaskCollectionTemplateDetail {\r\n canEdit: boolean;\r\n exportTaskCollectionTemplate: ExportTaskCollectionTemplate;\r\n fieldMappings: Record;\r\n formChanged: boolean;\r\n organizations: any[];\r\n validationController: ValidationController;\r\n organizationRules: ValidationRules;\r\n headerCellTextRules: ValidationRules;\r\n footerCellTextRules: ValidationRules;\r\n\r\n constructor(\r\n private bindingEngine: BindingEngine,\r\n private dialogPresenter: DialogPresenter,\r\n private exportTaskCollectionTemplateService: ExportTaskCollectionTemplateService,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private router: Router,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n validationControllerFactory: ValidationControllerFactory,\r\n ) {\r\n this.logger.name = 'label-template-detail';\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n this.canEdit =\r\n this.securityService.hasPermission('EditExportTaskCollectionTemplates') &&\r\n !this.securityService.isImpersonating();\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n async addOrganizationConfiguration() {\r\n const config = emptyExportTaskCollectionTemplateConfiguration();\r\n this.exportTaskCollectionTemplate.organizationConfigurations.push(config);\r\n await this.validationController.validate({\r\n object: this.exportTaskCollectionTemplate,\r\n propertyName: 'organizationConfigurations',\r\n });\r\n this.validationController.addObject(config, this.organizationRules);\r\n }\r\n\r\n async removeOrganizationConfiguration(\r\n organizationConfiguration: ExportTaskCollectionTemplateConfiguration,\r\n ) {\r\n const index =\r\n this.exportTaskCollectionTemplate.organizationConfigurations.indexOf(\r\n organizationConfiguration,\r\n );\r\n this.exportTaskCollectionTemplate.organizationConfigurations.splice(index, 1);\r\n this.validationController.removeObject(organizationConfiguration);\r\n await this.validationController.validate({\r\n object: this.exportTaskCollectionTemplate,\r\n propertyName: 'organizationConfigurations',\r\n });\r\n }\r\n\r\n addHeaderCellText() {\r\n const text = '';\r\n this.exportTaskCollectionTemplate.headerOptions.cellText.push(text);\r\n }\r\n\r\n removeHeaderCellText(text: string) {\r\n const index = this.exportTaskCollectionTemplate.headerOptions.cellText.indexOf(text);\r\n this.exportTaskCollectionTemplate.headerOptions.cellText.splice(index, 1);\r\n }\r\n\r\n addFooterCellText() {\r\n const text = '';\r\n this.exportTaskCollectionTemplate.footerOptions.cellText.push(text);\r\n }\r\n\r\n removeFooterCellText(text: string) {\r\n const index = this.exportTaskCollectionTemplate.footerOptions.cellText.indexOf(text);\r\n this.exportTaskCollectionTemplate.footerOptions.cellText.splice(index, 1);\r\n }\r\n\r\n async onColumnChecked() {\r\n await this.validationController.validate({\r\n object: this.exportTaskCollectionTemplate,\r\n propertyName: 'columns',\r\n });\r\n }\r\n\r\n async save() {\r\n const validationResult = await this.validationController.validate();\r\n if (!validationResult.valid) {\r\n return;\r\n }\r\n\r\n this.pageContext.isLoading = true;\r\n try {\r\n const exportTaskCollectionTemplate =\r\n this.exportTaskCollectionTemplate.id === 0\r\n ? await this.exportTaskCollectionTemplateService.createExportTaskCollectionTemplates(\r\n this.exportTaskCollectionTemplate,\r\n )\r\n : await this.exportTaskCollectionTemplateService.updateExportTaskCollectionTemplates(\r\n this.exportTaskCollectionTemplate,\r\n );\r\n this.exportTaskCollectionTemplate = exportTaskCollectionTemplate;\r\n this.pageContext.showSuccessOverlay(\r\n 'Export task collection template saved successfully.',\r\n );\r\n\r\n this.formChanged = false;\r\n this.router.navigateToRoute(\r\n 'export-task-collection-template-detail',\r\n { id: this.exportTaskCollectionTemplate.id },\r\n { replace: true },\r\n );\r\n } catch (error) {\r\n this.logger.error('Error saving export task collection template', error, {\r\n exportTaskCollectionTemplate: this.exportTaskCollectionTemplate,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Export Task Collection Template',\r\n 'An error occured while saving the export task collection template. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n cancel() {\r\n this.exportTaskCollectionTemplate = emptyExportTaskCollectionTemplate();\r\n this.exportTaskCollectionTemplate.columns = this.mapFieldMappingsToExportColumns();\r\n }\r\n\r\n private mapFieldMappingsToExportColumns() {\r\n const exportTaskCollectionTemplateColumns = [] as ExportTaskCollectionTemplateColumn[];\r\n for (var field in this.fieldMappings) {\r\n exportTaskCollectionTemplateColumns.push({\r\n name: field,\r\n displayName: this.fieldMappings[field],\r\n selected: false,\r\n });\r\n }\r\n\r\n return exportTaskCollectionTemplateColumns;\r\n }\r\n\r\n private setupValidation() {\r\n ValidationRules.ensure((m: ExportTaskCollectionTemplate) => m.columns)\r\n .satisfies((cols: ExportTaskCollectionTemplateColumn[]) =>\r\n cols.some((col: ExportTaskCollectionTemplateColumn) => col.selected),\r\n )\r\n .withMessage('At least one field must be selected.')\r\n .ensure((m) => m.organizationConfigurations)\r\n .required()\r\n .minItems(1)\r\n .withMessage(\r\n 'No organizations have been configured. Please click the Add Organization button to add one.',\r\n )\r\n .on(this.exportTaskCollectionTemplate);\r\n\r\n const ensureSingleOccurence = (organizationId: number) => {\r\n return (\r\n this.exportTaskCollectionTemplate.organizationConfigurations.filter(\r\n (config: ExportTaskCollectionTemplateConfiguration) =>\r\n config.organizationId === organizationId,\r\n ).length === 1\r\n );\r\n };\r\n this.organizationRules = ValidationRules.ensure(\r\n (m: ExportTaskCollectionTemplateConfiguration) => m.organizationId,\r\n )\r\n .satisfies((id: number) => id > 0)\r\n .withMessage('Organization is required.')\r\n .satisfies(ensureSingleOccurence)\r\n .withMessage('An organization can only be added once.')\r\n .ensure((m) => m.templateName)\r\n .required().rules;\r\n\r\n this.headerCellTextRules = ValidationRules.ensure(\r\n (m: ExportTaskCollectionTemplateHeaderOptions) => m.cellText,\r\n )\r\n .satisfies((arr: string[]) => arr.every((s) => s.length < 100))\r\n .withMessage('Maximum length allowed for each cell text is 100 characters.').rules;\r\n\r\n this.footerCellTextRules = ValidationRules.ensure(\r\n (m: ExportTaskCollectionTemplateFooterOptions) => m.cellText,\r\n )\r\n .satisfies((arr: string[]) => arr.every((s) => s.length < 100))\r\n .withMessage('Maximum length allowed for each cell text is 100 characters.').rules;\r\n\r\n this.exportTaskCollectionTemplate.organizationConfigurations.forEach(\r\n (config: ExportTaskCollectionTemplateConfiguration) => {\r\n this.validationController.addObject(config, this.organizationRules);\r\n },\r\n );\r\n this.validationController.addObject(\r\n this.exportTaskCollectionTemplate.headerOptions,\r\n this.headerCellTextRules,\r\n );\r\n this.validationController.addObject(\r\n this.exportTaskCollectionTemplate.footerOptions,\r\n this.footerCellTextRules,\r\n );\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n try {\r\n const [organizations, exportTaskCollectionTemplate, fieldMappings] =\r\n await Promise.all([\r\n this.userService.getCurrentUserOrganizations(),\r\n params.id === 'create'\r\n ? emptyExportTaskCollectionTemplate()\r\n : this.exportTaskCollectionTemplateService.getExportTaskCollectionTemplate(\r\n params.id,\r\n ),\r\n this.exportTaskCollectionTemplateService.getExportTaskCollectionTemplateColumns(),\r\n ]);\r\n\r\n this.organizations = organizations;\r\n this.fieldMappings = fieldMappings;\r\n if (exportTaskCollectionTemplate.columns.length === 0) {\r\n exportTaskCollectionTemplate.columns = this.mapFieldMappingsToExportColumns();\r\n }\r\n this.exportTaskCollectionTemplate = exportTaskCollectionTemplate;\r\n this.setupValidation();\r\n } catch (error) {\r\n this.logger.error('Error loading export task collection template.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Export Task Collection Template',\r\n 'An error occurred while loading the export task collection template. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n unbind() {\r\n this.exportTaskCollectionTemplate.organizationConfigurations.forEach(\r\n (config: ExportTaskCollectionTemplateConfiguration) => {\r\n this.validationController.removeObject(config);\r\n },\r\n );\r\n }\r\n}\r\n","module.exports = \"\";","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport CompareUtility from 'infrastructure/compare-utility';\r\nimport DataGridSelectAll from 'infrastructure/components/data-grid-select-all';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport Organization from 'organizations/organization';\r\nimport RecordStatus, { getRecordStatusOptions } from 'record-status';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport { ExportTaskCollectionTemplate } from './export-task-collection-template';\r\nimport {\r\n ExportTaskCollectionTemplateListQuery,\r\n ExportTaskCollectionTemplateListQueryFilters,\r\n} from './export-task-collection-template-list-query-filters';\r\nimport ExportTaskCollectionTemplateService from './export-task-collection-template-service';\r\nimport UiViewExportTaskCollectionTemplate from './ui-view-export-task-collection-template';\r\n\r\n@autoinject\r\nexport class ExportTaskCollectionTemplateList {\r\n @observable filterText;\r\n\r\n gridOptions: any;\r\n dataGridSelectAll: DataGridSelectAll;\r\n exportTaskCollectionTemplateListQueryFilters: ExportTaskCollectionTemplateListQueryFilters;\r\n\r\n applyFiltersSubscription: Subscription;\r\n clearFiltersSubscription: Subscription;\r\n\r\n recordStatusOptions: SelectorOption[];\r\n selectedRecordStatus: RecordStatus;\r\n\r\n organizations: Organization[];\r\n selectedOrganizations: any[] = [];\r\n filterCount: number;\r\n canEditExportTaskCollectionTemplates: boolean;\r\n\r\n constructor(\r\n private dialogPresenter: DialogPresenter,\r\n private eventAggregator: EventAggregator,\r\n private exportTaskCollectionTemplateService: ExportTaskCollectionTemplateService,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private router: Router,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n ) {\r\n this.dataGridSelectAll = new DataGridSelectAll([], ['_displayName']);\r\n this.logger.name = 'export-task-collection-template-list';\r\n this.filterText = '';\r\n\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template:\r\n '',\r\n headerCellTemplate:\r\n '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Configured For (Template Name)',\r\n field: 'displayName',\r\n template: '${data.displayName}',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n ],\r\n defaultColDef: {\r\n sortable: true,\r\n },\r\n };\r\n\r\n this.exportTaskCollectionTemplateListQueryFilters =\r\n new ExportTaskCollectionTemplateListQueryFilters();\r\n this.selectedRecordStatus = RecordStatus.ACTIVE;\r\n this.canEditExportTaskCollectionTemplates =\r\n this.securityService.hasPermission('EditExportTaskCollectionTemplates') &&\r\n !this.securityService.isImpersonating();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.router.navigateToRoute(\r\n 'export-task-collection-template-list',\r\n this.exportTaskCollectionTemplateListQueryFilters.getQueryParams(),\r\n );\r\n }\r\n\r\n handleClearFilters() {\r\n this.dataGridSelectAll.allSelected = false;\r\n this.exportTaskCollectionTemplateListQueryFilters.reset();\r\n this.router.navigateToRoute(\r\n 'export-task-collection-template-list',\r\n this.exportTaskCollectionTemplateListQueryFilters.getQueryParams(),\r\n );\r\n }\r\n\r\n filterTextChanged() {\r\n this.dataGridSelectAll.filterDataGridItems(this.filterText);\r\n }\r\n\r\n navigateToDetail(id: number) {\r\n this.router.navigateToRoute('export-task-collection-template-detail', { id });\r\n }\r\n\r\n private async deleteExportTaskCollectionTemplates(ids: number[]) {\r\n if (!ids.length || ids.length === 0) {\r\n return;\r\n }\r\n const itemsToDelete = this.dataGridSelectAll.dataGridItems.filter((x) =>\r\n ids.includes(x.id),\r\n );\r\n const s: string = ids.length > 1 ? 's' : '';\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n `Delete Export Task Collection Template${s}`,\r\n `Are you sure you want to delete ${\r\n ids.length > 1 ? 'these' : 'this'\r\n } export task collection template${s}?`,\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.pageContext.isLoading = true;\r\n try {\r\n await this.exportTaskCollectionTemplateService.deleteExportTaskCollectionTemplates(ids);\r\n this.pageContext.showSuccessOverlay(\r\n `Export task collection template${s} deleted successfully.`,\r\n );\r\n\r\n itemsToDelete.forEach((item) => {\r\n item.isActive = false;\r\n item.isSelected = false;\r\n var index = this.dataGridSelectAll.dataGridItems.indexOf(item);\r\n const dataItems = this.dataGridSelectAll.dataGridItems.splice(index, 1);\r\n this.dataGridSelectAll.dataGridItems = dataItems;\r\n });\r\n } catch (error) {\r\n this.logger.error(`Error deleting export task collection template${s}.`, error, {\r\n exportTaskCollectionTemplateIds: ids,\r\n });\r\n this.handleDeleteError(error, s.length);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async deleteExportTaskCollectionTemplate(item: UiViewExportTaskCollectionTemplate) {\r\n await this.deleteExportTaskCollectionTemplates([item.id]);\r\n }\r\n\r\n async deleteSelectedTemplates() {\r\n const idsToDelete = this.dataGridSelectAll.selectedDataGridItems.map((i) => i.id);\r\n await this.deleteExportTaskCollectionTemplates(idsToDelete);\r\n }\r\n\r\n handleDeleteError(error, multiple) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Deleting Label Template' + (multiple ? 's' : ''),\r\n this.getApiErrorMessage(error.apiErrorCode, multiple),\r\n );\r\n }\r\n\r\n getApiErrorMessage(errorCode, multiple) {\r\n if (errorCode === 2)\r\n return 'You dont have access to delete the label template' + (multiple ? 's' : '');\r\n\r\n return 'An unexpected error occurred while trying to delete label templates. Please try again later.';\r\n }\r\n\r\n canActivate(_params: ExportTaskCollectionTemplateListQuery, routeConfig) {\r\n return this.exportTaskCollectionTemplateListQueryFilters.ensureSingleApplyFilterHandler(\r\n routeConfig,\r\n );\r\n }\r\n\r\n activate(params: ExportTaskCollectionTemplateListQuery) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.apply',\r\n this.handleApplyFilters,\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.clear',\r\n this.handleClearFilters,\r\n );\r\n this.exportTaskCollectionTemplateListQueryFilters.setFilterValues(params);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.recordStatusOptions = getRecordStatusOptions();\r\n\r\n const [organizations, exportTaskCollectionTemplates] = await Promise.all([\r\n this.userService.getCurrentUserOrganizations(),\r\n this.exportTaskCollectionTemplateService.getExportTaskCollectionTemplates(\r\n params,\r\n ),\r\n ]);\r\n\r\n this.organizations = organizations;\r\n const dataGridItems = exportTaskCollectionTemplates.map(\r\n (t: ExportTaskCollectionTemplate) =>\r\n new UiViewExportTaskCollectionTemplate(\r\n t.id,\r\n t.organizationConfigurations,\r\n t.isActive,\r\n organizations,\r\n ),\r\n );\r\n\r\n this.dataGridSelectAll.dataGridItems = dataGridItems;\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error loading export task collection templates.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Export Task Collection Templates',\r\n 'An error occurred while loading the export task collection templates. Please try again later.',\r\n );\r\n }\r\n })();\r\n }\r\n\r\n canDeactivate() {\r\n this.applyFiltersSubscription?.dispose();\r\n this.clearFiltersSubscription?.dispose();\r\n }\r\n}\r\n","module.exports = \"\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".export-task-collection-template-checkbox-label-item{float:left;width:300px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient, HttpResponseMessage } from 'aurelia-http-client';\r\nimport { GlobalMessage, GlobalMessageApiRequest } from './global-message';\r\nimport { GlobalMessageNotification } from './global-message-notification';\r\nimport { GlobalMessageSearchType } from './global-message-search-type';\r\n\r\n@autoinject\r\nexport class GlobalMessagingService {\r\n private baseRoute: string;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'global-messaging';\r\n }\r\n\r\n //admin endpoints\r\n\r\n getGlobalMessages(id?: number): Promise {\r\n return this.httpClient.get(`${this.baseRoute}${id ? '/' + id : ''}`) as unknown as Promise<\r\n GlobalMessage[]\r\n >;\r\n }\r\n\r\n createGlobalMessage(request: GlobalMessageApiRequest): Promise {\r\n return this.httpClient.post(this.baseRoute, request) as unknown as Promise;\r\n }\r\n\r\n updateGlobalMessage(\r\n id: number,\r\n request: GlobalMessageApiRequest,\r\n ): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}`,\r\n request,\r\n ) as unknown as Promise;\r\n }\r\n\r\n approveGlobalMessage(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/approve`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n deleteGlobalMessage(id: number): Promise {\r\n return this.httpClient.delete(\r\n `${this.baseRoute}/${id}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n //user endpoints\r\n\r\n countUserGlobalMessageNotifications(): Promise {\r\n return this.httpClient.get(`${this.baseRoute}/count`) as unknown as Promise;\r\n }\r\n\r\n getUserGlobalMessageNotifications(\r\n searchType: GlobalMessageSearchType = GlobalMessageSearchType.Default,\r\n ): Promise {\r\n return this.httpClient.get(\r\n `${this.baseRoute}/notifications?searchType=${searchType.toLowerCase()}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n readUserMessage(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/read`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n unReadUserMessage(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/unread`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n deleteUserMessage(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/delete`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n\r\n unDeleteUserMessage(id: number): Promise {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${id}/undelete`,\r\n null,\r\n ) as unknown as Promise;\r\n }\r\n}\r\n","import SelectorOption from 'infrastructure/selector-option';\r\nimport Sample from 'requests/sample';\r\nimport SegmentationTemplate from 'segmentation-templates/segmentation-template';\r\nimport SegmentationTemplateSegment from 'segmentation-templates/segmentation-template-segment';\r\n\r\nexport default class SegmentationSampleGridColDataFactory {\r\n private _segmentationTemplates: SegmentationTemplate[];\r\n private _samples: Sample[];\r\n private _requiredSegmentationTemplates: SegmentationTemplate[];\r\n private _segmentationTemplateSelectorOptions: SelectorOption[];\r\n\r\n private _lookupSegmenationTemplates: SegmentationTemplate[];\r\n private _nonLookupSegmentationTemplates: SegmentationTemplate[];\r\n private _groupedLookupSegments: Record;\r\n\r\n constructor(segmenationTemplates: SegmentationTemplate[], samples: Sample[]) {\r\n this._segmentationTemplates = segmenationTemplates || [];\r\n this._samples = samples || [];\r\n this._requiredSegmentationTemplates = [];\r\n this._lookupSegmenationTemplates = [];\r\n this._nonLookupSegmentationTemplates = [];\r\n this._groupedLookupSegments = {};\r\n\r\n this.init();\r\n }\r\n\r\n public get samples(): Sample[] {\r\n return this._samples;\r\n }\r\n\r\n public get segmentationTemplateSelectorOptions(): SelectorOption[] {\r\n return this._segmentationTemplateSelectorOptions;\r\n }\r\n\r\n public get lookupSegmentationTemplates(): SegmentationTemplate[] {\r\n return this._lookupSegmenationTemplates;\r\n }\r\n\r\n public get nonLookupSegmentationTemplates(): SegmentationTemplate[] {\r\n return this._nonLookupSegmentationTemplates;\r\n }\r\n\r\n public get groupedLookupSegmentationTemplates(): Record {\r\n return this._groupedLookupSegments;\r\n }\r\n\r\n public lookupParentSegment(\r\n key: string,\r\n groupedLookupSegments?: Record,\r\n ): SegmentationTemplateSegment {\r\n const groups = groupedLookupSegments || this._groupedLookupSegments;\r\n return groups[key].find((sts: SegmentationTemplateSegment) => sts.parentSegmentId === null);\r\n }\r\n\r\n public lookupChildSegment(\r\n key: string,\r\n groupedLookSegments?: Record,\r\n ): SegmentationTemplateSegment {\r\n const groups = groupedLookSegments || this._groupedLookupSegments;\r\n return groups[key].find(\r\n (sts: SegmentationTemplateSegment) =>\r\n sts.parentSegmentId !== null && sts.parentSegmentId >= 0,\r\n );\r\n }\r\n\r\n public getSegmentationTemplateById(id: number): SegmentationTemplate {\r\n return this._segmentationTemplates.find((x) => x.id === id);\r\n }\r\n\r\n public getSegmentationTemplateByName(name: string): SegmentationTemplate {\r\n return this._segmentationTemplates.find((x) => x.name === name);\r\n }\r\n\r\n public getLookupSegmentationTemplateById(id: number): SegmentationTemplate {\r\n return this.filterSegmentationTemplatesByType(this._segmentationTemplates, true).find(\r\n (x) => x.id === id,\r\n );\r\n }\r\n\r\n public getNonLookupSegmentationTemplateById(id: number): SegmentationTemplate {\r\n return this.filterSegmentationTemplatesByType(this._segmentationTemplates, false).find(\r\n (x) => x.id === id,\r\n );\r\n }\r\n\r\n private init() {\r\n //HACK: This is a serialization issue and should be fixed on server side\r\n this._segmentationTemplates.forEach((st) => {\r\n this._samples.forEach((s) => this.fixupSegmentNames(s, st));\r\n });\r\n\r\n this.getRequiredSegmentationSegments();\r\n this._lookupSegmenationTemplates = this.filterSegmentationTemplatesByType(\r\n this._requiredSegmentationTemplates,\r\n true,\r\n );\r\n this._nonLookupSegmentationTemplates = this.filterSegmentationTemplatesByType(\r\n this._requiredSegmentationTemplates,\r\n false,\r\n );\r\n this._groupedLookupSegments = this.groupLookupSegments();\r\n this._segmentationTemplateSelectorOptions = this._segmentationTemplates.map((o) => {\r\n return {\r\n value: o.id,\r\n title: o.name,\r\n } as SelectorOption;\r\n });\r\n this._segmentationTemplateSelectorOptions.unshift({ value: null, title: 'none' });\r\n }\r\n\r\n private fixupSegmentNames(sample: any, segmentationTemplate: any) {\r\n if (!sample.segments) return;\r\n\r\n var segmentNames = Object.keys(sample.segments);\r\n\r\n for (let segment of segmentationTemplate.segments) {\r\n // Find match ignoring case.\r\n let segmentName = segmentNames.find(\r\n (n) => n.localeCompare(segment.name, 'en', { sensitivity: 'base' }) === 0,\r\n );\r\n\r\n // If casing is different, copy value to correct naming of property and delete old property.\r\n if (segment.name !== segmentName) {\r\n sample.segments[segment.name] = sample.segments[segmentName];\r\n delete sample.segments[segmentName];\r\n }\r\n }\r\n }\r\n\r\n private getRequiredSegmentationSegments(): void {\r\n const segmentKeys: string[] = [];\r\n const segmentKey = (key: string, id: number) => `${key}_${id}`;\r\n\r\n this._samples.forEach((sample) => {\r\n if (sample.segments) {\r\n for (let k in sample.segments) {\r\n segmentKeys.push(segmentKey(k, sample.segmentationTemplateId));\r\n }\r\n }\r\n });\r\n const uniqueSampleSegmentKeys = [...new Set(segmentKeys)];\r\n\r\n this._segmentationTemplates.forEach((st) => {\r\n const matchedTemplateSegments = st.segments.filter((seg) =>\r\n uniqueSampleSegmentKeys.includes(segmentKey(seg.name, seg.segmentationTemplateId)),\r\n );\r\n if (matchedTemplateSegments.length === 0) {\r\n return;\r\n }\r\n\r\n const clone = Object.assign({}, st);\r\n clone.segments = matchedTemplateSegments;\r\n this._requiredSegmentationTemplates.push(clone);\r\n });\r\n }\r\n\r\n private filterSegmentationTemplatesByType(\r\n segmenationTemplates: SegmentationTemplate[],\r\n lookupType: boolean,\r\n ): SegmentationTemplate[] {\r\n const filteredTemplates: SegmentationTemplate[] = [];\r\n segmenationTemplates.forEach((st) => {\r\n let segments: SegmentationTemplateSegment[];\r\n if (lookupType) {\r\n segments = st.segments.filter((sts) => sts.values);\r\n } else {\r\n segments = st.segments.filter((sts) => !sts.values);\r\n }\r\n\r\n if (!segments.length) {\r\n return;\r\n }\r\n\r\n const clone = Object.assign({}, st);\r\n clone.segments = segments;\r\n filteredTemplates.push(clone);\r\n });\r\n\r\n return filteredTemplates;\r\n }\r\n\r\n public groupLookupSegments(\r\n segments?: SegmentationTemplateSegment[],\r\n ): Record {\r\n segments =\r\n segments ||\r\n this._lookupSegmenationTemplates.concat.apply(\r\n [],\r\n this._lookupSegmenationTemplates.map((lst) => lst.segments),\r\n );\r\n\r\n const groups: Record = {};\r\n segments.forEach((segment: SegmentationTemplateSegment) => {\r\n let segmentId = null;\r\n\r\n if (segment.parentSegmentId === undefined && !groups[segment.id]) {\r\n groups[segment.id] = [];\r\n segmentId = segment.id;\r\n } else if (\r\n segment.parentSegmentId !== null &&\r\n segment.parentSegmentId !== undefined &&\r\n !groups[segment.parentSegmentId]\r\n ) {\r\n groups[segment.parentSegmentId] = [];\r\n segmentId = segment.parentSegmentId;\r\n } else if (segment.parentSegmentId === null || segment.parentSegmentId === undefined) {\r\n segmentId = segment.id;\r\n } else {\r\n segmentId = segment.parentSegmentId;\r\n }\r\n\r\n if (groups[segmentId] === undefined) {\r\n groups[segmentId] = [];\r\n }\r\n groups[segmentId].push(segment);\r\n });\r\n\r\n return groups;\r\n }\r\n}\r\n","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport SecurityService from '../security/security-service';\r\nimport apiErrorsInterceptor from './api-errors/api-errors-interceptor';\r\nimport DialogPresenter from './dialogs/dialog-presenter';\r\n\r\n@inject(HttpClient, SecurityService, EventAggregator, DialogPresenter)\r\nexport default class HttpClientConfigurator {\r\n constructor(httpClient, securityService, eventAggregator, dialogPresenter) {\r\n this.httpClient = httpClient;\r\n this.securityService = securityService;\r\n this.eventAggregator = eventAggregator;\r\n this.dialogPresenter = dialogPresenter;\r\n }\r\n\r\n checkClientVersion(message) {\r\n const clientVersion = message?.headers?.get('x-client-update-to');\r\n clientVersion\r\n ? this.eventAggregator.publish('client.refresh', { clientVersion })\r\n : this.eventAggregator.publish('client.isCurrent');\r\n\r\n return clientVersion;\r\n }\r\n\r\n configure() {\r\n this.httpClient.configure((config) =>\r\n config\r\n .withBaseUrl('/api/')\r\n .withHeader('X-Requested-With', 'XMLHttpRequest')\r\n .withHeader('X-Client-Version', portalClientVersion)\r\n .withInterceptor(apiErrorsInterceptor)\r\n .withInterceptor({\r\n request: (message) => {\r\n this.securityService.tryAddAuthentication(message);\r\n this.securityService.tryAddImpersonation(message);\r\n this.securityService.tryAddWorkingUnderOrganization(message);\r\n\r\n return message;\r\n },\r\n response: (message) => {\r\n this.securityService.tryUpdateAuthentication(message);\r\n\r\n this.checkClientVersion(message);\r\n\r\n if (message.response && message.content !== undefined)\r\n return message.content;\r\n\r\n return message;\r\n },\r\n responseError: async (message) => {\r\n const clientVersion = this.checkClientVersion(message);\r\n\r\n if (\r\n clientVersion &&\r\n clientVersion !== portalClientVersion &&\r\n (await this.dialogPresenter.showClientVersionReloadDialog())\r\n )\r\n window.location.reload();\r\n\r\n throw message;\r\n },\r\n }),\r\n );\r\n }\r\n}\r\n","enum OutcomeStatus {\r\n ALL = 'All',\r\n PASS = 'Pass',\r\n FAIL = 'Fail',\r\n INCOMPLETE = 'Incomplete',\r\n}\r\n\r\nexport default OutcomeStatus;\r\n\r\nexport function getOutcomeStatusOptions() {\r\n return [\r\n { value: OutcomeStatus.ALL, title: 'All' },\r\n { value: OutcomeStatus.PASS, title: 'Pass' },\r\n { value: OutcomeStatus.FAIL, title: 'Fail' },\r\n { value: OutcomeStatus.INCOMPLETE, title: 'Incomplete' },\r\n ];\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class LabService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getLabs(searchText) {\r\n return this.httpClient.get('labs/');\r\n }\r\n\r\n getAdminLabs() {\r\n return this.httpClient.get('labs/admin/labs/');\r\n }\r\n\r\n getLab(id) {\r\n return this.httpClient.get(`labs/${id}`);\r\n }\r\n\r\n saveLab(lab) {\r\n return this.httpClient.post('labs/', lab);\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n validateTrigger,\r\n} from 'aurelia-validation';\r\nimport FormViewModel from 'infrastructure/contracts/form-view-model';\r\nimport SimpleMDE from 'simplemde/src/js/simplemde';\r\nimport DialogPresenter from '../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../infrastructure/logger';\r\nimport PageContext from '../infrastructure/page-context';\r\nimport SecurityService from '../security/security-service';\r\nimport { GlobalMessage, GlobalMessageApiRequest } from './global-message';\r\nimport { GlobalMessagingService } from './global-messaging-service';\r\n\r\n@autoinject\r\nexport class GlobalMessageDetail implements FormViewModel {\r\n formChanged: boolean;\r\n validationController: ValidationController;\r\n form: GlobalMessage;\r\n simplemdeEditor: SimpleMDE;\r\n editorTextarea: any;\r\n\r\n canEdit: boolean;\r\n canView: boolean;\r\n currentUserId: number;\r\n isReadOnly: boolean;\r\n\r\n constructor(\r\n private logger: Logger,\r\n private dialogPresenter: DialogPresenter,\r\n private globalMessagingService: GlobalMessagingService,\r\n private pageContext: PageContext,\r\n private securityService: SecurityService,\r\n private router: Router,\r\n validationControllerFactory: ValidationControllerFactory,\r\n ) {\r\n this.logger.name = 'global-message-detail';\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n }\r\n\r\n handleFormChange(): void {\r\n this.formChanged = true;\r\n }\r\n\r\n handleEditorChanged() {\r\n if (!this.form || this.isReadOnly) return;\r\n\r\n this.form.message = this.simplemdeEditor?.value();\r\n this.handleFormChange();\r\n }\r\n\r\n async loadGlobalMessage(id: number) {\r\n try {\r\n this.pageContext.isLoading = true;\r\n const globalMessage = await this.globalMessagingService.getGlobalMessages(id);\r\n\r\n this.form = globalMessage[0];\r\n this.isReadOnly = this.form.approvals.length === 2;\r\n } catch (error) {\r\n this.logger.error(`Error loading global message '${id}'`, error);\r\n this.dialogPresenter.showAlert(\r\n 'Error loading Global Message',\r\n 'An error occured whild loading the global message. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async approve() {\r\n try {\r\n this.pageContext.isLoading = true;\r\n const globalMessage = await this.globalMessagingService.approveGlobalMessage(\r\n this.form.id,\r\n );\r\n this.form = globalMessage;\r\n this.isReadOnly = this.form.approvals.length === 2;\r\n } catch (error) {\r\n this.logger.error('Error approving global message', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Approving Global Message',\r\n 'An error occured while approving this global message. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async save() {\r\n try {\r\n this.pageContext.isLoading = true;\r\n\r\n this.form.message = this.simplemdeEditor.value();\r\n const { id } = this.form;\r\n const request: GlobalMessageApiRequest = {\r\n title: this.form.title,\r\n message: this.form.message,\r\n };\r\n\r\n if (id === 0) {\r\n await this.globalMessagingService.createGlobalMessage(request);\r\n } else {\r\n await this.globalMessagingService.updateGlobalMessage(id, request);\r\n }\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('CAP plan saved successfully');\r\n this.router.navigateToRoute('global-message-list');\r\n } catch (error) {\r\n this.logger.error('Error saving global message', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Global Message',\r\n 'An error occured while saving this global message. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n cancel() {\r\n this.router.navigateToRoute('global-message-list');\r\n }\r\n\r\n async deletePermanently() {\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Permanently Delete Global Message?',\r\n 'Confirm you wish to permanently delete this global message. This message will not be viewable to anyone.',\r\n 'Confirm',\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n try {\r\n this.pageContext.isLoading = true;\r\n await this.globalMessagingService.deleteGlobalMessage(this.form.id);\r\n\r\n this.router.navigateToRoute('global-message-list');\r\n } catch (error) {\r\n this.logger.error('Error permanently deleting global message', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Permanently Deleting Global Message',\r\n 'An error occured while Permanently Deleting this global message. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async canActivate(params: any): Promise {\r\n if (!this.securityService.isCurrentUserGlobalMessenger()) return false;\r\n\r\n const { id } = params;\r\n if (id == 'create') {\r\n this.form = {\r\n id: 0,\r\n title: '',\r\n message: '',\r\n createDateTime: '',\r\n isActive: false,\r\n };\r\n return true;\r\n }\r\n\r\n await this.loadGlobalMessage(id);\r\n const user = this.securityService.getCurrentSessionUser();\r\n this.currentUserId = user.id;\r\n\r\n return true;\r\n }\r\n\r\n bind(): void {\r\n ValidationRules.ensure((f: GlobalMessage) => f.title)\r\n .required()\r\n .maxLength(100)\r\n .ensure((f: GlobalMessage) => f.message)\r\n .required()\r\n .on(this.form);\r\n }\r\n\r\n attached() {\r\n this.simplemdeEditor = new SimpleMDE({\r\n element: this.editorTextarea,\r\n toolbar: [\r\n 'bold',\r\n 'italic',\r\n 'heading',\r\n '|',\r\n 'quote',\r\n 'unordered-list',\r\n 'ordered-list',\r\n '|',\r\n 'preview',\r\n 'side-by-side',\r\n 'fullscreen',\r\n '|',\r\n 'guide',\r\n ],\r\n insertTexts: {\r\n link: ['[', '](https://)'],\r\n },\r\n });\r\n\r\n this.simplemdeEditor.value(this.form.message || '');\r\n this.simplemdeEditor.codemirror.on('change', this.handleEditorChanged.bind(this));\r\n if (this.isReadOnly) {\r\n this.simplemdeEditor.togglePreview();\r\n }\r\n }\r\n\r\n detached() {\r\n this.simplemdeEditor?.codemirror.off('change', this.handleEditorChanged.bind(this));\r\n this.simplemdeEditor?.toTextArea();\r\n this.simplemdeEditor = null;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { GridOptions } from 'ag-grid-community';\r\nimport { Grid } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport DialogPresenter from '../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../infrastructure/logger';\r\nimport { GlobalMessage } from './global-message';\r\nimport { globalMessageGridOptions } from './global-message-grid';\r\nimport { GlobalMessagingService } from './global-messaging-service';\r\n\r\n@autoinject\r\nexport class GlobalMessageList {\r\n gridOptions: GridOptions;\r\n globalMessageGrid: any;\r\n globalMessages: GlobalMessage[];\r\n\r\n constructor(\r\n private logger: Logger,\r\n private dialogPresenter: DialogPresenter,\r\n private globalMessageService: GlobalMessagingService,\r\n ) {\r\n this.logger.name = 'global-message-list';\r\n }\r\n\r\n async loadGlobalMessageData() {\r\n try {\r\n this.globalMessages = await this.globalMessageService.getGlobalMessages();\r\n } catch (error) {\r\n this.logger.error('Error loading global messages', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error loading Global Messages',\r\n 'An error occured whild loading global messages. Please try again later.',\r\n );\r\n }\r\n\r\n this.gridOptions.api?.setRowData(this.globalMessages);\r\n }\r\n\r\n activate() {\r\n this.loadGlobalMessageData();\r\n }\r\n\r\n attached() {\r\n this.gridOptions = globalMessageGridOptions;\r\n this.gridOptions.rowData = this.globalMessages || [];\r\n\r\n new Grid(this.globalMessageGrid, this.gridOptions);\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n\r\n do {\r\n if (Element.prototype.matches.call(el, s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { ManageTestMethodDataRow } from './manage-test-method-data-row';\r\n\r\n@autoinject\r\nexport class TestMethodManagementService {\r\n private baseRoute: string;\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'test-method-management/organization';\r\n }\r\n\r\n fetchOrganizationTestMethods(organizationId: number): Promise {\r\n return this.httpClient.get(`${this.baseRoute}/${organizationId}`) as unknown as Promise<\r\n ManageTestMethodDataRow[]\r\n >;\r\n }\r\n\r\n hideOrganizationTestMethods(organizationId: number, organizationTestMethodIds: number[]) {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${organizationId}/bulk-hide`,\r\n organizationTestMethodIds,\r\n );\r\n }\r\n\r\n showOrganizationTestMethods(organizationId: number, organizationTestMethodIds: number[]) {\r\n return this.httpClient.put(\r\n `${this.baseRoute}/${organizationId}/bulk-show`,\r\n organizationTestMethodIds,\r\n );\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@autoinject\r\nexport default class DistributionGroupService {\r\n constructor(private httpClient: HttpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getDistributionGroups(organizationId: number) {\r\n return this.httpClient.get(`distribution-groups?organizationId=${organizationId}`);\r\n }\r\n}\r\n","import marked from 'marked';\r\nimport SimpleMDE from 'simplemde';\r\nimport { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport FaqGroupService from './faq-group-service';\r\nimport FaqService from './faq-service';\r\n\r\n@inject(Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, FaqGroupService, FaqService)\r\nexport default class FaqDetail {\r\n @observable selectedFaqGroups;\r\n\r\n constructor(router, validationControllerFactory, pageContext, logger, dialogPresenter, faqGroupService, faqService) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'faq-detail';\r\n this.dialogPresenter = dialogPresenter;\r\n this.faqGroupService = faqGroupService;\r\n this.faqService = faqService;\r\n this.selectedFaqGroups = [];\r\n }\r\n\r\n selectedFaqGroupsChanged() {\r\n if (!this.faq)\r\n return;\r\n\r\n if (this.selectedFaqGroups && this.selectedFaqGroups.length) {\r\n this.faq.faqGroupId = this.selectedFaqGroups[0].id;\r\n this.faq.faqGroupName = this.selectedFaqGroups[0].name;\r\n } else {\r\n this.faq.faqGroupId = 0;\r\n this.faq.faqGroupName = '';\r\n }\r\n }\r\n\r\n activate(params) {\r\n this.faqGroupId = parseInt(params.faqGroupId);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var results = await Promise.all([\r\n params.id === 'create' ?\r\n Promise.resolve({ isActive: true }) :\r\n this.faqService.getFaq(params.id),\r\n this.faqGroupService.getFaqGroups()\r\n ]);\r\n\r\n this.faq = results[0];\r\n\r\n if (this.faq.faqGroupId)\r\n this.faqGroupId = this.faq.faqGroupId;\r\n\r\n this.faqGroups = results[1];\r\n\r\n var selectedFaqGroup = this.faqGroups.find(faqGroup => faqGroup.id === (this.faq.faqGroupId || this.faqGroupId));\r\n\r\n this.selectedFaqGroups = selectedFaqGroup ? [selectedFaqGroup] : [];\r\n \r\n ValidationRules\r\n .ensure('question').displayName('Question').required().maxLength(512)\r\n .ensure('answer').displayName('Answer').required()\r\n .on(this.faq);\r\n\r\n this.validationController.addObject(this.faq);\r\n\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error while loading FAQ', error);\r\n this.pageContext.isLoading = false;\r\n\r\n if (error.apiErrorCode === 1) {\r\n this.handleNotFound();\r\n return;\r\n }\r\n\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading FAQ',\r\n 'An error occurred while loading the FAQ. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n handleNotFound() {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'FAQ Not Found',\r\n 'We sorry, but the FAQ you are trying to view does not exist.')\r\n .then(() => this.router.navigateToRoute('faq-list'));\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('faq-list', { id: this.faqGroupId });\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var savedFaq = await this.faqService.saveFaq(this.faq);\r\n\r\n this.faq.id = savedFaq.id;\r\n this.faq.ordinal = savedFaq.ordinal; // Update ordinal in view model in case the backend set it to another value.\r\n this.faqGroupId = savedFaq.faqGroupId; // Update the FAQ group ID in case the user changed groups. This ensures the link back to the list is to the correct one.\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('FAQ saved successfully.');\r\n this.router.navigateToRoute('faq-detail', { id: this.faq.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving FAQ.', error, { faq: this.faq });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving FAQ',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n switch (errorCode) {\r\n default:\r\n return 'An error occurred while saving the current FAQ. Please try again later.';\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import marked from 'marked';\r\nimport SimpleMDE from 'simplemde';\r\nimport { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport FaqGroupService from './faq-group-service';\r\n\r\n@inject(Element, Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, FaqGroupService)\r\nexport default class FaqGroupDetail {\r\n constructor(element, router, validationControllerFactory, pageContext, logger, dialogPresenter, faqGroupService) {\r\n this.element = element;\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'faq-group-detail';\r\n this.dialogPresenter = dialogPresenter;\r\n this.faqGroupService = faqGroupService;\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.faqGroup = params.id === 'create' ?\r\n { isActive: true } :\r\n await this.faqGroupService.getFaqGroup(params.id);\r\n\r\n ValidationRules\r\n .ensure('name').displayName('Name').required().maxLength(100)\r\n .ensure('description').displayName('Description').required().maxLength(255)\r\n .on(this.faqGroup);\r\n\r\n this.validationController.addObject(this.faqGroup);\r\n\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error while loading FAQ group', error);\r\n this.pageContext.isLoading = false;\r\n\r\n if (error.apiErrorCode === 1) {\r\n this.handleNotFound();\r\n return;\r\n }\r\n\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading FAQ Group',\r\n 'An error occurred while loading the FAQ group. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n handleNotFound() {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'FAQ Group Not Found',\r\n 'We sorry, but the FAQ group you are trying to view does not exist.')\r\n .then(() => this.router.navigateToRoute('faq-group-list'));\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('faq-group-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.faqGroup.id = (await this.faqGroupService.saveFaqGroup(this.faqGroup)).id;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('FAQ group saved successfully.');\r\n this.router.navigateToRoute('faq-group-detail', { id: this.faqGroup.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving FAQ group.', error, { faqGroup: this.faqGroup });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving FAQ Group',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n switch (errorCode) {\r\n default:\r\n return 'An error occurred while saving the current FAQ group. Please try again later.';\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport SecurityService from '../../security/security-service';\r\nimport FaqGroupService from './faq-group-service';\r\n\r\n@inject(Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, SecurityService, FaqGroupService)\r\nexport default class FaqGroupList {\r\n @observable filterText;\r\n\r\n constructor(router, validationControllerFactory, pageContext, logger, dialogPresenter, securityService, faqGroupService) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'faq-group-list';\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.faqGroupService = faqGroupService;\r\n this.filterText = '';\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template: '',\r\n headerCellTemplate: '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Ordinal',\r\n field: 'ordinal',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true,\r\n sort: 'asc'\r\n },\r\n { suppressMenu: true, headerName: 'Name', field: 'name', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n { suppressMenu: true, headerName: 'Description', field: 'description', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n }\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveFaqGroups = [];\r\n }\r\n\r\n navigateToFaqs(faqGroupId) {\r\n this.router.navigateToRoute('faq-list', { id: faqGroupId });\r\n }\r\n\r\n navigateToFaqGroupDetail(id) {\r\n this.router.navigateToRoute('faq-group-detail', { id });\r\n }\r\n\r\n setSelectedActiveFaqGroups() {\r\n this.selectedActiveFaqGroups = this.faqGroupsView.filter(faqGroup => faqGroup.isSelected && faqGroup.isActive);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.faqGroupsView.every(faqGroup => faqGroup.isSelected);\r\n this.setSelectedActiveFaqGroups();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.faqGroupsView) {\r\n this.allSelected = !this.faqGroupsView.every(faqGroup => faqGroup.isSelected);\r\n\r\n for (let faqGroup of this.faqGroupsView)\r\n faqGroup.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveFaqGroups();\r\n\r\n return true;\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateFaqGroupsView();\r\n }\r\n\r\n updateFaqGroupsView() {\r\n if (!this.faqGroups)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n this.faqGroupsView = this.faqGroups.filter(u =>\r\n (u.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (u.description || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.faqGroups = await this.faqGroupService.getFaqGroups();\r\n\r\n for (let faqGroup of this.faqGroups) {\r\n // Store original ordinal to compare later during save.\r\n faqGroup.orginalOrdinal = faqGroup.ordinal;\r\n\r\n ValidationRules\r\n .ensure('ordinal').displayName('Ordinal').required().matches(/^\\d+$/)\r\n .on(faqGroup);\r\n\r\n this.validationController.addObject(faqGroup);\r\n }\r\n\r\n this.updateFaqGroupsView();\r\n } catch (error) {\r\n this.logger.error('Error while loading FAQ groups', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading FAQ Groups',\r\n 'An error occurred while loading the FAQ groups. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n deleteFaqGroup(faqGroup) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete FAQ Group', 'Are you sure you want to delete this FAQ group?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.faqGroupService\r\n .deleteFaqGroups([faqGroup.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('FAQ group deleted successfully.');\r\n\r\n faqGroup.isSelected = false;\r\n faqGroup.isActive = false;\r\n\r\n this.setSelectedActiveFaqGroups();\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting FAQ group.', error, { faqGroupId: faqGroup.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedFaqGroups() {\r\n var faqGroupsToDelete = this.faqGroupsView.filter(u => u.isSelected);\r\n if (!faqGroupsToDelete.length)\r\n return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation('Delete Selected FAQ Groups', 'Are you sure you want to delete the selected FAQ groups?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n var faqGroupIds = faqGroupsToDelete.map(faqGroup => faqGroup.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.faqGroupService\r\n .deleteFaqGroups(faqGroupIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected FAQ groups deleted successfully.');\r\n\r\n for (let faqGroup of faqGroupsToDelete) {\r\n faqGroup.isSelected = false;\r\n faqGroup.isActive = false;\r\n\r\n this.setSelectedActiveFaqGroups();\r\n }\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting FAQ groups.', error, { faqGroupIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multipleFaqGroups) {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Error Deleting FAQ Group' + (multipleFaqGroups ? 's' : ''),\r\n 'An unexpected error occurred while trying to delete FAQ group' + (multipleFaqGroups ? 's' : '') + '. Please try again later.');\r\n }\r\n\r\n handleFormChange($event) {\r\n // Only set the 'form changed' flag if one of the ordinal inputs is modified. (Ignore all selection checkboxes.)\r\n if ($event.detail.formElement.hasAttribute('data-ordinal'))\r\n this.formChanged = true;\r\n }\r\n\r\n async applyOrdinals() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n // Copy FAQ groups in order to ensure the sequence of ordinals makes sense.\r\n var faqGroups = [...this.faqGroups];\r\n\r\n // Sort the list by ordinals and break ties by comparing the FAQ group names.\r\n faqGroups.sort((a, b) => {\r\n var value = a.ordinal - b.ordinal;\r\n if (value !== 0)\r\n return value;\r\n\r\n return a.name.toLowerCase().localeCompare(b.name.toLowerCase());\r\n });\r\n\r\n // Re-assign the ordinals based on the new order.\r\n for (var i = 0; i < faqGroups.length; i++)\r\n faqGroups[i].ordinal = i + 1;\r\n\r\n // Get a list of ID/ordinal mappings where the ordinal has changed from its original ordinal.\r\n var idOrdinalMap = faqGroups\r\n .filter(g => g.ordinal !== g.orginalOrdinal)\r\n .map(g => ({ id: g.id, ordinal: g.ordinal }));\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.faqGroupService.updateFaqGroupOrdinals(idOrdinalMap);\r\n this.formChanged = false;\r\n\r\n // Store original ordinal to compare later during next save.\r\n for (let faqGroup of this.faqGroups)\r\n faqGroup.orginalOrdinal = faqGroup.ordinal;\r\n } catch (error) {\r\n this.logger.error('Error while saving FAQ group ordinals', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving FAQ Group Ordinals',\r\n 'An error occurred while savig the FAQ group ordinals. Please try again later.');\r\n }\r\n\r\n // Re-sort data grid and view.\r\n this.faqGroupsView.sort((a, b) => a.ordinal - b.ordinal);\r\n this.faqGroupDataGridViewModel.gridApi.setSortModel([{ colId: 'ordinal', sort: 'asc' }])\r\n this.pageContext.isLoading = false;\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport SecurityService from '../../security/security-service';\r\nimport FaqService from './faq-service';\r\n\r\n@inject(Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, SecurityService, FaqService)\r\nexport default class FaqList {\r\n @observable filterText;\r\n\r\n constructor(router, validationControllerFactory, pageContext, logger, dialogPresenter, securityService, faqService) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'faq-list';\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.faqService = faqService;\r\n this.filterText = '';\r\n \r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template: '',\r\n headerCellTemplate: '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Ordinal',\r\n field: 'ordinal',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true,\r\n sort: 'asc'\r\n },\r\n { suppressMenu: true, headerName: 'Question', field: 'question', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n { suppressMenu: true, headerName: 'Answer', field: 'answer', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveFaqs = [];\r\n }\r\n\r\n navigateToFaqDetail(id) {\r\n this.router.navigateToRoute('faq-detail', { id });\r\n }\r\n\r\n setSelectedActiveFaqs() {\r\n this.selectedActiveFaqs = this.faqsView.filter(faq => faq.isSelected && faq.isActive);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.faqsView.every(faq => faq.isSelected);\r\n this.setSelectedActiveFaqs();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.faqsView) {\r\n this.allSelected = !this.faqsView.every(faq => faq.isSelected);\r\n\r\n for (let faq of this.faqsView)\r\n faq.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveFaqs();\r\n\r\n return true;\r\n }\r\n\r\n activate(params) {\r\n this.faqGroupId = params.id;\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.faqs = await this.faqService.getFaqs(params.id);\r\n\r\n for (let faq of this.faqs) {\r\n // Store original ordinal to compare later during save.\r\n faq.orginalOrdinal = faq.ordinal;\r\n\r\n ValidationRules\r\n .ensure('ordinal').displayName('Ordinal').required().matches(/^\\d+$/)\r\n .on(faq);\r\n\r\n this.validationController.addObject(faq);\r\n }\r\n\r\n this.updateView();\r\n } catch (error) {\r\n this.logger.error('Error loading FAQs.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading FAQs',\r\n 'An error occurred while loading the FAQs. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateView();\r\n }\r\n\r\n updateView() {\r\n if (!this.faqs)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n this.faqsView = this.faqs.filter(faq =>\r\n (faq.question || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (faq.answer || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n\r\n deleteFaq(faq) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete FAQ', 'Are you sure you want to delete this FAQ?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.faqService\r\n .deleteFaqs([faq.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('FAQ deleted successfully.');\r\n\r\n faq.isSelected = false;\r\n faq.isActive = false;\r\n\r\n this.setSelectedActiveFaqs();\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting FAQ.', error, { faqId: faq.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedFaqs() {\r\n var faqsToDelete = this.faqsView.filter(u => u.isSelected);\r\n if (!faqsToDelete.length)\r\n return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation('Delete Selected FAQs', 'Are you sure you want to delete the selected FAQs?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n var faqIds = faqsToDelete.map(faq => faq.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.faqService\r\n .deleteFaqs(faqIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected FAQs deleted successfully.');\r\n\r\n for (let faq of faqsToDelete) {\r\n faq.isSelected = false;\r\n faq.isActive = false;\r\n\r\n this.setSelectedActiveFaqs();\r\n }\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting FAQs.', error, { faqIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multipleFaqs) {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Error Deleting FAQ' + (multipleFaqs ? 's' : ''),\r\n 'An unexpected error occurred while trying to delete FAQ' + (multipleFaqs ? 's' : '') + '. Please try again later.');\r\n }\r\n\r\n handleFormChange($event) {\r\n // Only set the 'form changed' flag if one of the ordinal inputs is modified. (Ignore all selection checkboxes.)\r\n if ($event.detail.formElement.hasAttribute('data-ordinal'))\r\n this.formChanged = true;\r\n }\r\n\r\n async applyOrdinals() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n // Copy FAQs in order to ensure the sequence of ordinals makes sense.\r\n var faqs = [...this.faqs];\r\n\r\n // Sort the list by ordinals and break ties by comparing the FAQ question text.\r\n faqs.sort((a, b) => {\r\n var value = a.ordinal - b.ordinal;\r\n if (value !== 0)\r\n return value;\r\n\r\n return a.question.toLowerCase().localeCompare(b.question.toLowerCase());\r\n });\r\n\r\n // Re-assign the ordinals based on the new order.\r\n for (var i = 0; i < faqs.length; i++)\r\n faqs[i].ordinal = i + 1;\r\n\r\n // Get a list of ID/ordinal mappings where the ordinal has changed from its original ordinal.\r\n var idOrdinalMap = faqs\r\n .filter(g => g.ordinal !== g.orginalOrdinal)\r\n .map(g => ({ id: g.id, ordinal: g.ordinal }));\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.faqService.updateFaqOrdinals(idOrdinalMap);\r\n this.formChanged = false;\r\n\r\n // Store original ordinal to compare later during next save.\r\n for (let faq of this.faqs)\r\n faq.orginalOrdinal = faq.ordinal;\r\n } catch (error) {\r\n this.logger.error('Error while saving FAQ ordinals', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving FAQ Ordinals',\r\n 'An error occurred while savig the FAQ ordinals. Please try again later.');\r\n }\r\n\r\n // Re-sort data grid and view.\r\n this.faqsView.sort((a, b) => a.ordinal - b.ordinal);\r\n this.faqDataGridViewModel.gridApi.setSortModel([{ colId: 'ordinal', sort: 'asc' }])\r\n this.pageContext.isLoading = false;\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport FaqGroupService from './faq-group-service';\r\n\r\n@inject(PageContext, Logger, DialogPresenter, FaqGroupService)\r\nexport default class FaqList {\r\n @observable filterText;\r\n\r\n constructor(pageContext, logger, dialogPresenter, faqGroupService) {\r\n this.pageContext = pageContext;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'faqs';\r\n\r\n this.dialogPresenter = dialogPresenter;\r\n this.faqGroupService = faqGroupService;\r\n this.filterText = '';\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.faqGroups = await this.faqGroupService.getFaqGroups(true);\r\n this.updateView();\r\n } catch (error) {\r\n this.logger.error('Error loading FAQ.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading FAQs',\r\n 'An error occurred while loading the FAQs. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateView();\r\n }\r\n\r\n updateView() {\r\n if (!this.faqGroups)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n for (let faqGroup of this.faqGroups) {\r\n faqGroup.isVisible = false;\r\n for (let faq of faqGroup.faqs) {\r\n faq.isVisible = (faq.question || '').toLowerCase().indexOf(lowerCasedFilterText) > -1;\r\n faqGroup.isVisible = faq.isVisible ? true : faqGroup.isVisible;\r\n }\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport GlossaryTermService from './glossary-term-service';\r\nimport SecurityService from '../../security/security-service';\r\n\r\n@inject(PageContext, DialogPresenter, Logger, SecurityService, GlossaryTermService)\r\nexport default class Glossary {\r\n @observable filterText;\r\n \r\n constructor(pageContext, dialogPresenter, logger, securityService, glossaryTermService) {\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'glossary';\r\n\r\n this.securityService = securityService;\r\n this.glossaryTermService = glossaryTermService;\r\n this.filterText = '';\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n\r\n this.pageContext.isLoading = true;\r\n try {\r\n this.user = this.securityService.getEffectiveUser();\r\n if (!this.user)\r\n throw new Error('No current user.');\r\n\r\n var glossaryTerms = await this.glossaryTermService.getGlossaryTerms();\r\n this.glossaryTermGroups = buildGlossaryTermGroups(glossaryTerms);\r\n this.glossaryTermGroupVisibilities = {};\r\n this.updateGlossaryTermGroupVisibilities();\r\n this.pageContext.isLoading = false;\r\n\r\n } catch (error) {\r\n this.logger.error('Error loading glossary.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Glossary',\r\n 'An error occurred while loading the glossary. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n filterTextChanged() {\r\n if (!this.glossaryTermGroups)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n for (let glossaryTerms of this.glossaryTermGroups.values())\r\n for (let glossaryTerm of glossaryTerms)\r\n glossaryTerm.isVisible = (glossaryTerm.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1;\r\n\r\n this.updateGlossaryTermGroupVisibilities();\r\n }\r\n\r\n updateGlossaryTermGroupVisibilities() {\r\n for (let [letter, glossaryTerms] of this.glossaryTermGroups.entries())\r\n this.glossaryTermGroupVisibilities[letter] = glossaryTerms.some(gt => gt.isVisible);\r\n }\r\n};\r\n\r\nfunction buildGlossaryTermGroups(glossaryTerms) {\r\n var glossaryTermGroups = new Map();\r\n\r\n for (let glossaryTerm of glossaryTerms) {\r\n glossaryTerm.isVisible = true;\r\n\r\n var letter = glossaryTerm.name.trim()[0].toUpperCase();\r\n var glossaryTermGroup = glossaryTermGroups.get(letter);\r\n if (glossaryTermGroup)\r\n glossaryTermGroup.push(glossaryTerm);\r\n else\r\n glossaryTermGroups.set(letter, [glossaryTerm]);\r\n }\r\n\r\n return glossaryTermGroups;\r\n}\r\n","import marked from 'marked';\r\nimport SimpleMDE from 'simplemde';\r\nimport { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport SecurityService from '../../security/security-service';\r\nimport GlossaryTermService from './glossary-term-service';\r\n\r\n@inject(Element, Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, SecurityService, GlossaryTermService)\r\nexport default class GlossaryTermDetail {\r\n constructor(element, router, validationControllerFactory, pageContext, logger, dialogPresenter, securityService, glossaryTermService) {\r\n this.element = element;\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'glossary-term-detail';\r\n this.dialogPresenter = dialogPresenter;\r\n this.glossaryTermService = glossaryTermService;\r\n this.securityService = securityService;\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.glossaryTerm = params.id === 'create' ?\r\n { isActive: true } :\r\n await this.glossaryTermService.getGlossaryTerm(params.id);\r\n\r\n ValidationRules\r\n .ensure('name').displayName('Name').required().maxLength(100)\r\n .ensure('description').displayName('Description').required().maxLength(512)\r\n .on(this.glossaryTerm);\r\n\r\n this.validationController.addObject(this.glossaryTerm);\r\n\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error while loading glossary term', error);\r\n this.pageContext.isLoading = false;\r\n\r\n if (error.apiErrorCode === 1) {\r\n this.handleNotFound();\r\n return;\r\n }\r\n\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Glossary Term',\r\n 'An error occurred while loading the glossary term. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n handleNotFound() {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Glossary Term Not Found',\r\n 'We sorry, but the glossary term you are trying to view does not exist.')\r\n .then(() => this.router.navigateToRoute('glossary-term-list'));\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('glossary-term-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.glossaryTerm.id = (await this.glossaryTermService.saveGlossaryTerm(this.glossaryTerm)).id;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Glossary term saved successfully.');\r\n this.router.navigateToRoute('glossary-term-detail', { id: this.glossaryTerm.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving glossary term.', error, { glossaryTerm: this.glossaryTerm });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Glossary Term',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n switch (errorCode) {\r\n default:\r\n return 'An error occurred while saving the current glossary term. Please try again later.';\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import $ from 'jquery';\r\nimport { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport SecurityService from '../../security/security-service';\r\nimport GlossaryTermService from './glossary-term-service';\r\n\r\n@inject(Element, Router, PageContext, Logger, DialogPresenter, SecurityService, GlossaryTermService)\r\nexport default class GlossaryTermList {\r\n @observable filterText;\r\n\r\n constructor(element, router, pageContext, logger, dialogPresenter, securityService, glossaryTermService) {\r\n this.element = element;\r\n this.router = router;\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'glossary-term-list';\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.glossaryTermService = glossaryTermService;\r\n this.filterText = '';\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template: '',\r\n headerCellTemplate: '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n { suppressMenu: true, headerName: 'Name', field: 'name', comparator: CompareUtility.compareStringsInsensitive, width: 150, sort: 'asc' },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Description',\r\n field: 'description',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 150,\r\n cellClass: 'long-text',\r\n template: '
${data.description}
'\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 100,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveGlossaryTerms = [];\r\n }\r\n\r\n navigateToGlossaryTermDetail(id) {\r\n this.router.navigateToRoute('glossary-term-detail', { id });\r\n }\r\n\r\n setSelectedActiveGlossaryTerms() {\r\n this.selectedActiveGlossaryTerms = this.glossaryTermsView.filter(glossaryTerm => glossaryTerm.isSelected && glossaryTerm.isActive);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.glossaryTermsView.every(glossaryTerm => glossaryTerm.isSelected);\r\n this.setSelectedActiveGlossaryTerms();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.glossaryTermsView) {\r\n this.allSelected = !this.glossaryTermsView.every(glossaryTerm => glossaryTerm.isSelected);\r\n\r\n for (let glossaryTerm of this.glossaryTermsView)\r\n glossaryTerm.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveGlossaryTerms();\r\n\r\n return true;\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateGlossaryTermsView();\r\n }\r\n\r\n updateGlossaryTermsView() {\r\n if (!this.glossaryTerms)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n this.glossaryTermsView = this.glossaryTerms.filter(u =>\r\n (u.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (u.description || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.glossaryTerms = await this.glossaryTermService.getGlossaryTerms();\r\n this.pageContext.isLoading = false;\r\n this.updateGlossaryTermsView();\r\n } catch (error) {\r\n this.logger.error('Error while loading glossary terms', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Glossary Terms',\r\n 'An error occurred while loading the glossary terms. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n deleteGlossaryTerm(glossaryTerm) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete Glossary Term', 'Are you sure you want to delete this glossary term?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.glossaryTermService\r\n .deleteGlossaryTerms([glossaryTerm.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Glossary term deleted successfully.');\r\n\r\n glossaryTerm.isSelected = false;\r\n glossaryTerm.isActive = false;\r\n\r\n this.setSelectedActiveGlossaryTerms();\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting glossary term.', error, { glossaryTermId: glossaryTerm.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedGlossaryTerms() {\r\n var glossaryTermsToDelete = this.glossaryTermsView.filter(u => u.isSelected);\r\n if (!glossaryTermsToDelete.length)\r\n return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation('Delete Selected Glossary Terms', 'Are you sure you want to delete the selected glossary terms?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n var glossaryTermIds = glossaryTermsToDelete.map(glossaryTerm => glossaryTerm.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.glossaryTermService\r\n .deleteGlossaryTerms(glossaryTermIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected glossary terms deleted successfully.');\r\n\r\n for (let glossaryTerm of glossaryTermsToDelete) {\r\n glossaryTerm.isSelected = false;\r\n glossaryTerm.isActive = false;\r\n\r\n this.setSelectedActiveGlossaryTerms();\r\n }\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting glossary terms.', error, { glossaryTermIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multipleGlossaryTerms) {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Error Deleting Glossary Term' + (multipleGlossaryTerms ? 's' : ''),\r\n 'An unexpected error occurred while trying to delete glossary term' + (multipleGlossaryTerms ? 's' : '') + '. Please try again later.');\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","module.exports = \"\\r\\n\";","import { inject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport NavigationAuthorizer from '../security/navigation/navigation-authorizer';\r\n\r\n@inject(Router, NavigationAuthorizer)\r\nexport class HelpNavigationMenu {\r\n @bindable colSize;\r\n\r\n constructor(router, navigationAuthorizer) {\r\n this.router = router;\r\n this.navigationAuthorizer = navigationAuthorizer;\r\n }\r\n\r\n attached() {\r\n (async () => {\r\n let navItems = [];\r\n\r\n for (let item of this.router.navigation)\r\n if (item.config.group === 'help' && await this.navigationAuthorizer.hasAccess(item.config))\r\n navItems.push(item);\r\n\r\n this.navItems = navItems;\r\n })();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport StringResourceService from '../../infrastructure/string-resource-service';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport SupportTopicService from './support-topic-service';\r\nimport SupportRequestService from './support-request-service';\r\n\r\n@inject(ValidationControllerFactory, StringResourceService, PageContext, Logger, DialogPresenter, SupportTopicService, SupportRequestService)\r\nexport default class Support {\r\n constructor(validationControllerFactory, stringResourceService, pageContext, logger, dialogPresenter, supportTopicService, supportRequestService) {\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.stringResourceService = stringResourceService;\r\n this.pageContext = pageContext;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'support';\r\n\r\n this.dialogPresenter = dialogPresenter;\r\n this.supportTopicService = supportTopicService;\r\n this.supportRequestService = supportRequestService;\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n try {\r\n this.pageContext.isLoading = true;\r\n this.supportTopics = await this.supportTopicService.getSupportTopics();\r\n this.disclaimer = (await this.stringResourceService.getStringResources())['support_disclaimer'];\r\n\r\n this.selectedSupportTopics = [];\r\n\r\n ValidationRules\r\n .ensure('selectedSupportTopics')\r\n .displayName('Support Topic')\r\n .satisfies(selectedOrganizations => !!selectedOrganizations.length)\r\n .ensure('message')\r\n .displayName('Message')\r\n .required()\r\n .on(this);\r\n\r\n var supportFormMessage = localStorage.getItem('supportFormMessage');\r\n if (supportFormMessage) {\r\n this.message = supportFormMessage;\r\n localStorage.removeItem('supportFormMessage');\r\n }\r\n\r\n } catch (error) {\r\n this.logger.error('Error loading support topics', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Support Topics',\r\n 'An error occurred while loading the support topics. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n async submit() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n var supportRequest = {\r\n supportTopicId: this.selectedSupportTopics[0].id,\r\n message: this.message\r\n };\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.supportRequestService.createSupportRequest(supportRequest);\r\n this.pageContext.showSuccessOverlay('Support request created successfully.', false);\r\n this.selectedSupportTopics = [];\r\n this.message = '';\r\n this.formChanged = false;\r\n } catch (error) {\r\n this.logger.error('Error creating support request.', error, { supportRequest });\r\n this.dialogPresenter.showAlert(\r\n 'Error Creating Support Request',\r\n 'An error occurred while creating the support request. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n};\r\n","import { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport SupportTopicService from './support-topic-service';\r\n\r\n@inject(Router, ValidationControllerFactory, PageContext, DialogPresenter, Logger, SupportTopicService)\r\nexport default class SupportTopicDetail {\r\n constructor(router, validationControllerFactory, pageContext, dialogPresenter, logger, supportTopicService) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'support-topic-detail';\r\n\r\n this.supportTopicService = supportTopicService;\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('support-topic-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.topic.id = (await this.supportTopicService.saveSupportTopic(this.topic)).id;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Support topic saved successfully.');\r\n this.router.navigateToRoute('support-topic-detail', { id: this.topic.id }, { replace: true });\r\n }\r\n catch (error) {\r\n this.logger.error('Error saving topic.', error, { topic: this.topic });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Support Topic',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n switch (errorCode) {\r\n case 500:\r\n return 'The topic name specified is already in use.';\r\n default:\r\n return 'An error occurred while saving the current support topic. Please try again later.';\r\n }\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n try {\r\n this.pageContext.isLoading = true;\r\n\r\n this.topic = { isActive: true };\r\n if (params.id !== 'create')\r\n this.topic = await this.supportTopicService.getSupportTopic(params.id);\r\n\r\n ValidationRules\r\n .ensure('name')\r\n .displayName('Name')\r\n .required()\r\n .maxLength(100)\r\n .ensure('description')\r\n .displayName('Description')\r\n .required()\r\n .maxLength(255)\r\n .ensure('email')\r\n .displayName('Recipient Email')\r\n .required()\r\n .email()\r\n .maxLength(512)\r\n .on(this.topic);\r\n this.validationController.addObject(this.topic);\r\n }\r\n catch (error) {\r\n this.logger.error('Error loading support topic', error, { supportTopicId: params.id });\r\n\r\n var errorAlertPromise = error.apiErrorCode === 1 ?\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Support Topic',\r\n 'The current topic doesn\\'t exist.') :\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Support Topic',\r\n 'An error occurred while loading the current support topic. Please try again later.');\r\n\r\n errorAlertPromise.then(() => {\r\n this.router.navigateToRoute('support-topic-list');\r\n });\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport SupportTopicService from './support-topic-service';\r\n\r\n@inject(Router, PageContext, DialogPresenter, Logger, SupportTopicService)\r\nexport default class SupportTopicList {\r\n constructor(router, pageContext, dialogPresenter, logger, supportTopicService) {\r\n this.router = router;\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.logger = logger;\r\n this.logger.name = 'support-topic-list';\r\n this.supportTopicService = supportTopicService;\r\n }\r\n\r\n navigateToSupportTopicDetail(id) {\r\n this.router.navigateToRoute('support-topic-detail', { id });\r\n }\r\n \r\n deleteSupportTopic(topic) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete Support Topic', 'Are you sure you want to delete this support topic?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.supportTopicService\r\n .deleteSupportTopics([topic.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Support topic deleted successfully.');\r\n topic.isActive = false;\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting support topic.', error, { supportTopicId: topic.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error);\r\n });\r\n });\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n try {\r\n var topics = await this.supportTopicService.getSupportTopics();\r\n this.topics = topics;\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error loading support topics.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Support Topics',\r\n 'An error occurred while loading the support topics. Please try again later.');\r\n }\r\n })();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","module.exports = \"\\r\\n\";","import SimpleMDE from 'simplemde';\r\nimport { inject, bindable, bindingMode } from 'aurelia-framework';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport UploadedFileService from '../../infrastructure/uploaded-files/uploaded-file-service';\r\n\r\n@inject(PageContext, Logger, DialogPresenter, UploadedFileService)\r\nexport class MarkdownEditor {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value;\r\n @bindable imageUploadPath;\r\n\r\n constructor(pageContext, logger, dialogPresenter, uploadedFileService) {\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.dialogPresenter = dialogPresenter;\r\n this.uploadedFileService = uploadedFileService;\r\n this.handleEditorChange = this.handleEditorChange.bind(this);\r\n }\r\n\r\n valueChanged(newValue, oldValue) {\r\n if (oldValue === newValue)\r\n return;\r\n\r\n this.setEditorValue(newValue);\r\n }\r\n\r\n setEditorValue(value) {\r\n if (!this.editor)\r\n return;\r\n\r\n var editorValue = this.editor.value();\r\n if (value === editorValue)\r\n return;\r\n\r\n this.editor.value(value || '');\r\n }\r\n\r\n handleEditorChange() {\r\n this.value = this.editor && this.editor.value();\r\n }\r\n\r\n attached() {\r\n this.editor = new SimpleMDE({\r\n element: this.editorTextarea,\r\n toolbar: this.buildToolbar(),\r\n insertTexts: {\r\n image: [`![`, `](#url#)`],\r\n link: ['[', '](https://)'],\r\n },\r\n });\r\n\r\n if (this.value)\r\n this.setEditorValue(value);\r\n\r\n this.editor.codemirror.on('change', this.handleEditorChange);\r\n }\r\n\r\n detached() {\r\n this.editor.codemirror.off('change', this.handleEditorChange);\r\n this.editor && this.editor.toTextArea();\r\n this.editor = null;\r\n }\r\n\r\n buildToolbar() {\r\n return [\r\n 'bold', 'italic', 'heading',\r\n '|',\r\n 'quote', 'unordered-list', 'ordered-list',\r\n '|',\r\n 'link', this.createImageToolbarItem(), \r\n '|',\r\n 'preview', 'side-by-side', 'fullscreen',\r\n '|',\r\n 'guide'\r\n ];\r\n }\r\n\r\n createImageToolbarItem() {\r\n var markdownEditor = this;\r\n return {\r\n name: 'custom',\r\n title: 'Insert Image',\r\n className: 'fa fa-picture-o',\r\n action: () => markdownEditor.showFileDialog()\r\n };\r\n }\r\n\r\n async uploadImage() {\r\n if (!this.imageFileInputElement.value)\r\n return;\r\n\r\n var files = Array.from(this.imageFileInputElement.files);\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var url = await this.uploadedFileService.uploadFiles(this.imageUploadPath, files, progress => {\r\n this.uploadPercent = progress.loaded / progress.total\r\n });\r\n \r\n if (/editor-preview-active/.test(this.editor.codemirror.getWrapperElement().lastChild.className))\r\n return;\r\n\r\n var text;\r\n var start = this.editor.options.insertTexts.image[0];\r\n var end = this.editor.options.insertTexts.image[1];\r\n var startPoint = this.editor.codemirror.getCursor(\"start\");\r\n var endPoint = this.editor.codemirror.getCursor(\"end\");\r\n if (url) {\r\n end = end.replace(\"#url#\", url);\r\n }\r\n if (this.editor.getState(this.editor.codemirror).image) {\r\n text = this.editor.codemirror.getLine(startPoint.line);\r\n start = text.slice(0, startPoint.ch);\r\n end = text.slice(startPoint.ch);\r\n this.editor.codemirror.replaceRange(start + end, {\r\n line: startPoint.line,\r\n ch: 0\r\n });\r\n } else {\r\n text = this.editor.codemirror.getSelection();\r\n this.editor.codemirror.replaceSelection(start + text + end);\r\n\r\n startPoint.ch += start.length;\r\n if (startPoint !== endPoint) {\r\n endPoint.ch += start.length;\r\n }\r\n }\r\n this.editor.codemirror.setSelection(startPoint, endPoint);\r\n this.editor.codemirror.focus();\r\n } catch (error) {\r\n this.logger.error('Error uploading image', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Uploading Image',\r\n 'An error occurred while uploading the image. Please try again later.');\r\n }\r\n\r\n this.imageFileInputElement.value = '';\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n showFileDialog() {\r\n this.imageFileInputElement.click();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import marked from 'marked';\r\nimport { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport StringUtility from '../../infrastructure/string-utility';\r\nimport SecurityService from '../../security/security-service';\r\nimport UserGuideService from './user-guide-service';\r\n\r\n@inject(Element, Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, SecurityService, UserGuideService)\r\nexport default class UserGuideDetail {\r\n constructor(element, router, validationControllerFactory, pageContext, logger, dialogPresenter, securityService, userGuideService) {\r\n this.element = element;\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'user-guide-detail';\r\n this.dialogPresenter = dialogPresenter;\r\n this.userGuideService = userGuideService;\r\n this.securityService = securityService;\r\n this.htmlContent = '';\r\n\r\n this.editMode = this.securityService.isCurrentUserInternal() && !this.securityService.isImpersonating();\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n if (params.code) {\r\n let userGuides = await this.userGuideService.getUserGuides(params.code);\r\n if (userGuides.length === 0) {\r\n this.handleNotFound();\r\n return;\r\n }\r\n\r\n this.userGuide = userGuides[0];\r\n } else {\r\n this.userGuide = params.id === 'create' ?\r\n { isActive: true } :\r\n await this.userGuideService.getUserGuide(params.id);\r\n }\r\n\r\n this.htmlContent = marked(this.userGuide.content || '');\r\n\r\n if (this.editMode) {\r\n if (!this.userGuide.imageUploadPath)\r\n this.userGuide.imageUploadPath = `/help/images/user-guides/${StringUtility.getRandomString(10)}`;\r\n\r\n ValidationRules\r\n .ensure('title').displayName('Title').required().maxLength(100)\r\n .ensure('description').displayName('Description').required().maxLength(255)\r\n .on(this.userGuide);\r\n\r\n this.validationController.addObject(this.userGuide);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error while loading user guide', error);\r\n this.pageContext.isLoading = false;\r\n\r\n if (error.apiErrorCode === 1) {\r\n this.handleNotFound();\r\n return;\r\n }\r\n\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading User Guide',\r\n 'An error occurred while loading the user guide. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n handleNotFound() {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Help Page Not Found',\r\n 'We sorry, but the help page you are trying to view does not exist.')\r\n .then(() => this.router.navigateToRoute('user-guide-list'));\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('user-guide-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n if (!this.userGuide.content)\r\n this.userGuide.content = '';\r\n\r\n this.userGuide.id = (await this.userGuideService.saveUserGuide(this.userGuide)).id;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('User guide saved successfully.');\r\n this.router.navigateToRoute('user-guide-detail', { id: this.userGuide.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving user guide.', error, { userGuide: this.userGuide });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving User Guide',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n switch (errorCode) {\r\n default:\r\n return 'An error occurred while saving the current user guide. Please try again later.';\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import $ from 'jquery';\r\nimport { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport Logger from '../../infrastructure/logger';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport SecurityService from '../../security/security-service';\r\nimport UserGuideService from './user-guide-service';\r\n\r\n@inject(Element, Router, PageContext, Logger, DialogPresenter, SecurityService, UserGuideService)\r\nexport default class UserGuideList {\r\n @observable filterText;\r\n\r\n constructor(element, router, pageContext, logger, dialogPresenter, securityService, userGuideService) {\r\n this.element = element;\r\n this.router = router;\r\n this.pageContext = pageContext;\r\n this.logger = logger;\r\n this.logger.name = 'user-guide-list';\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.userGuideService = userGuideService;\r\n this.filterText = '';\r\n\r\n this.editMode = this.securityService.isCurrentUserInternal() && !this.securityService.isImpersonating();\r\n\r\n if (this.editMode) {\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template: '',\r\n headerCellTemplate: '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n { suppressMenu: true, headerName: 'Title', field: 'title', comparator: CompareUtility.compareStringsInsensitive, width: 150, sort: 'asc' },\r\n { suppressMenu: true, headerName: 'Description', field: 'description', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Core',\r\n field: 'isHelpPage',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: \r\n '' +\r\n '',\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 100,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveUserGuides = [];\r\n }\r\n }\r\n\r\n navigateToUserGuideDetail(id) {\r\n this.router.navigateToRoute('user-guide-detail', { id });\r\n }\r\n\r\n setSelectedActiveUserGuides() {\r\n this.selectedActiveUserGuides = this.userGuidesView.filter(userGuide => userGuide.isSelected && userGuide.isActive);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.userGuidesView.every(userGuide => userGuide.isSelected);\r\n this.setSelectedActiveUserGuides();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.userGuidesView) {\r\n this.allSelected = !this.userGuidesView.every(userGuide => userGuide.isSelected);\r\n\r\n for (let userGuide of this.userGuidesView)\r\n userGuide.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveUserGuides();\r\n\r\n return true;\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateUserGuidesView();\r\n }\r\n\r\n updateUserGuidesView() {\r\n if (!this.userGuides)\r\n return;\r\n\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n this.userGuidesView = this.userGuides.filter(u =>\r\n (u.title || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (u.description || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.userGuides = await this.userGuideService.getUserGuides();\r\n this.pageContext.isLoading = false;\r\n this.updateUserGuidesView();\r\n } catch (error) {\r\n this.logger.error('Error while loading user guides', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading User Guides',\r\n 'An error occurred while loading the user guides. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n deleteUserGuide(userGuide) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete User Guide', 'Are you sure you want to delete this user guide?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.userGuideService\r\n .deleteUserGuides([userGuide.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('User guide deleted successfully.');\r\n\r\n userGuide.isSelected = false;\r\n userGuide.isActive = false;\r\n\r\n this.setSelectedActiveUserGuides();\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting user guide.', error, { userGuideId: userGuide.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedUserGuides() {\r\n var userGuidesToDelete = this.userGuidesView.filter(u => u.isSelected);\r\n if (!userGuidesToDelete.length)\r\n return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation('Delete Selected User Guides', 'Are you sure you want to delete the selected user guides?')\r\n .then(confirmed => {\r\n if (!confirmed)\r\n return;\r\n\r\n var userGuideIds = userGuidesToDelete.map(userGuide => userGuide.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.userGuideService\r\n .deleteUserGuides(userGuideIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected users deleted successfully.');\r\n\r\n for (let userGuide of userGuidesToDelete) {\r\n userGuide.isSelected = false;\r\n userGuide.isActive = false;\r\n\r\n this.setSelectedActiveUserGuides();\r\n }\r\n })\r\n .catch(error => {\r\n this.logger.error('Error deleting user guides.', error, { userGuideIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multipleUserGuides) {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Error Deleting User Guide' + (multipleUserGuides ? 's' : ''),\r\n 'An unexpected error occurred while trying to delete user guide' + (multipleUserGuides ? 's' : '') + '. Please try again later.');\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import GenerateTasksPointZoneDistributionMethod from './generate-tasks-point-zone-distribution-method';\r\nimport TaskGenerationRequest, { TaskGenerationZoneDistribution, TaskRequestPriority } from './task-generation-request';\r\nimport GenerateTasksDateSelectionType from './generate-task-date-selection-type';\r\n\r\nexport default class TaskGenerationClientSettings {\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod;\r\n pointZoneDistributions: TaskGenerationZoneDistribution[];\r\n riskPriorities?: TaskRequestPriority[];\r\n requestedTaskCount: number;\r\n dateSelectionType: GenerateTasksDateSelectionType;\r\n\r\n\r\n static fromTaskGenerationRequest(request: TaskGenerationRequest, dateSelectionType: GenerateTasksDateSelectionType) {\r\n let clientSettings = new TaskGenerationClientSettings();\r\n\r\n clientSettings.pointZoneDistributionMethod = request.pointZoneDistributionMethod;\r\n clientSettings.pointZoneDistributions = request.pointZoneDistributions;\r\n clientSettings.riskPriorities = request.riskPriorities;\r\n clientSettings.requestedTaskCount = request.requestedTaskCount;\r\n clientSettings.dateSelectionType = dateSelectionType;\r\n\r\n return clientSettings\r\n }\r\n}\r\n","export default class PromiseQueue {\r\n private _pending: Array<() => void> = [];\r\n private _activeCount = 0;\r\n\r\n constructor(private concurrency: number) {}\r\n\r\n get activeCount(): number {\r\n return this._activeCount;\r\n }\r\n\r\n get pendingCount(): number {\r\n return this._pending.length;\r\n }\r\n\r\n enqueue(task: () => Promise): Promise {\r\n return new Promise((resolve, reject) => {\r\n this._pending.push(async () => {\r\n this._activeCount++;\r\n try {\r\n resolve(await task());\r\n } catch (error) {\r\n reject(error);\r\n } finally {\r\n this._activeCount--;\r\n this.dequeue();\r\n }\r\n });\r\n this.dequeue();\r\n });\r\n }\r\n\r\n setConcurrency(concurrency: number) {\r\n this.concurrency = concurrency;\r\n this.dequeue();\r\n }\r\n\r\n private dequeue() {\r\n while (this._activeCount < this.concurrency && this._pending.length > 0) {\r\n this._pending.shift()();\r\n }\r\n }\r\n}\r\n","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class SupportTopicService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n createSupportRequest(supportRequest) {\r\n return this.httpClient.post('help/support-requests', supportRequest);\r\n }\r\n}\r\n","import { bindable, children, inject } from 'aurelia-framework';\r\nimport BooleanUtility from 'infrastructure/boolean-utility';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class Accordion {\r\n @children('accordion-item') items;\r\n @bindable multiExpand;\r\n\r\n $accordionElement;\r\n $accordion;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n attached() {\r\n this.$accordionElement = $(this.element.querySelector('ul'));\r\n this.$accordion = new Foundation.Accordion(this.$accordionElement, {\r\n multiExpand: this.multiExpand ? BooleanUtility.parsePrimitive(this.multiExpand) : false\r\n });\r\n }\r\n\r\n detached() {\r\n if (this.$accordion) {\r\n this.$accordion.destroy();\r\n this.$accordion = undefined;\r\n this.$accordionElement = undefined;\r\n }\r\n }\r\n\r\n expandAllItems() {\r\n if (!this.$accordionElement)\r\n return;\r\n\r\n // open all panels\r\n let accordion = this.$accordionElement;\r\n accordion.foundation('down', $(this.element.querySelectorAll('.accordion-content')));\r\n }\r\n\r\n closeAllItems() {\r\n if (!this.$accordionElement)\r\n return;\r\n\r\n // close all panels\r\n let accordion = this.$accordionElement;\r\n accordion.foundation('up', $(this.element.querySelectorAll('.accordion-content')));\r\n }\r\n}\r\n","import { bindable, containerless, children } from 'aurelia-framework';\r\n\r\n@containerless\r\nexport class AccordionItem {\r\n @children('content') content;\r\n @bindable title;\r\n @bindable isVisible = true;\r\n};\r\n","module.exports = \"\\r\\n\";","module.exports = \"\\r\\n\";","import { inject, bindable } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class ContentSizeChangeCustomAttribute {\r\n @bindable eventName;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.handleSizeChange = this.handleSizeChange.bind(this);\r\n }\r\n\r\n attached() {\r\n this.$element = $(this.element);\r\n this.$element.on('on.zf.toggler', this.handleSizeChange);\r\n this.$element.on('off.zf.toggler', this.handleSizeChange);\r\n }\r\n\r\n detached() {\r\n if (!this.$element)\r\n return;\r\n\r\n this.$element.off('on.zf.toggler');\r\n this.$element.off('off.zf.toggler');\r\n }\r\n\r\n handleSizeChange() {\r\n this.element.dispatchEvent(new CustomEvent(this.eventName, { bubbles: true, detail: {} }));\r\n }\r\n};\r\n","import { inject } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class DataDropdownCustomAttribute {\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n attached() {\r\n this.$dropdown = $(this.element);\r\n this.$dropdown.foundation();\r\n }\r\n\r\n detached() {\r\n if (!this.$dropdown)\r\n return;\r\n \r\n var dropdown =this.$dropdown.data('zfPlugin')\r\n if (dropdown)\r\n dropdown.destroy();\r\n\r\n this.$dropdown = null;\r\n }\r\n\r\n open(anchorElement) {\r\n if (!this.$dropdown)\r\n return;\r\n\r\n var dropdown = this.$dropdown.data('zfPlugin');\r\n if (dropdown) {\r\n var $anchor = $(anchorElement);\r\n \r\n dropdown.$anchors = $anchor;\r\n dropdown.$currentAnchor = $anchor;\r\n dropdown.open();\r\n }\r\n }\r\n\r\n get isOpen() {\r\n if (!this.$dropdown)\r\n return false;\r\n else\r\n return this.$dropdown.hasClass('is-open');\r\n }\r\n\r\n close() {\r\n var dropdown = this.$dropdown.data('zfPlugin');\r\n if (dropdown) \r\n dropdown.close();\r\n }\r\n};\r\n","import { inject } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class DataEqualizerCustomAttribute {\r\n constructor(element) {\r\n this.element = element;\r\n this.initializeEqualizer = this.initializeEqualizer.bind(this);\r\n }\r\n\r\n attached() {\r\n this.$equalizer = $(this.element);\r\n\r\n window.addEventListener('optimizedresize', this.initializeEqualizer);\r\n this.observer = new MutationObserver(this.initializeEqualizer);\r\n this.observer.observe(\r\n this.element,\r\n { attributes: false, childList: true, characterData: false }\r\n );\r\n\r\n this.initializeEqualizer();\r\n }\r\n\r\n detached() {\r\n window.removeEventListener('optimizedresize', this.initializeEqualizer);\r\n this.observer && this.observer.disconnect();\r\n \r\n var equalizer = this.$equalizer.data('zfPlugin');\r\n if (equalizer)\r\n equalizer.destroy();\r\n }\r\n\r\n initializeEqualizer() {\r\n if (!this.$equalizer)\r\n return;\r\n\r\n var equalizer = this.$equalizer.data('zfPlugin');\r\n if (equalizer)\r\n Foundation.reInit(this.$equalizer);\r\n else\r\n this.$equalizer.foundation();\r\n }\r\n};\r\n","import {\r\n ColDefUtil,\r\n Grid,\r\n PropertyKeys,\r\n} from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport {\r\n bindable,\r\n BindingEngine,\r\n Container,\r\n inject,\r\n ViewCompiler,\r\n} from 'aurelia-framework';\r\n\r\nPropertyKeys.ALL_PROPERTIES = [\r\n ...PropertyKeys.ALL_PROPERTIES,\r\n 'container',\r\n 'viewCompiler',\r\n 'overrideContext',\r\n];\r\n\r\nColDefUtil.ALL_PROPERTIES = [\r\n ...ColDefUtil.ALL_PROPERTIES,\r\n 'headerCellTemplate',\r\n 'metadata',\r\n];\r\n\r\n@inject(Container, Element, ViewCompiler, BindingEngine)\r\nclass DataGrid {\r\n @bindable gridOptions;\r\n @bindable gridData;\r\n @bindable disableAutosizeColumns;\r\n @bindable saveColumnState;\r\n\r\n // HACK: Used to stop rebinding of aurelia components due to the fact that the select2 behaves undesirably and loses it's selection\r\n // in any cell, including on rows other than rows that are added or removed.\r\n @bindable supressCellRenderRefresh;\r\n\r\n templateMap = new Map();\r\n headerTemplateMap = new Map();\r\n groupTemplateMap = new Map();\r\n minColumnStateColumnWidth = 50;\r\n\r\n constructor(container, element, viewCompiler, bindingEngine) {\r\n this.container = container;\r\n this.element = element;\r\n this.viewCompiler = viewCompiler;\r\n this.bindingEngine = bindingEngine;\r\n this.disableAutosizeColumns = false;\r\n\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n }\r\n\r\n get columnStateLocalStorageKey() {\r\n return `column-state.${this.saveColumnState}`;\r\n }\r\n\r\n handleMouseDown(event) {\r\n this.mousePressed = true;\r\n }\r\n\r\n handleMouseUp(event) {\r\n this.mousePressed = false;\r\n\r\n if (this.scrollInterval) {\r\n clearInterval(this.scrollInterval);\r\n this.scrollInterval = null;\r\n }\r\n }\r\n\r\n handleMouseMove(event) {\r\n if (!this.gridOptions.enableRangeSelection || !this.mousePressed)\r\n return;\r\n\r\n let threshold = 120;\r\n let gridViewportBoundingRectangle =\r\n this.gridViewport.getBoundingClientRect();\r\n\r\n if (this.scrollInterval) {\r\n clearInterval(this.scrollInterval);\r\n this.scrollInterval = null;\r\n }\r\n\r\n if (\r\n event.clientY <= gridViewportBoundingRectangle.top + threshold &&\r\n this.gridViewport.scrollTop !== 0\r\n ) {\r\n this.scrollInterval = setInterval(() => {\r\n this.gridViewport.scrollTop -=\r\n 10 *\r\n ((60 +\r\n gridViewportBoundingRectangle.top +\r\n threshold -\r\n event.clientY) /\r\n 60);\r\n\r\n if (this.gridViewport.scrollTop === 0)\r\n clearInterval(this.scrollInterval);\r\n }, 50);\r\n } else if (\r\n event.clientY >= gridViewportBoundingRectangle.bottom - threshold &&\r\n this.gridViewport.scrollHeight - this.gridViewport.scrollTop !==\r\n this.gridViewport.clientHeight\r\n ) {\r\n this.scrollInterval = setInterval(() => {\r\n this.gridViewport.scrollTop +=\r\n 10 *\r\n ((60 +\r\n event.clientY -\r\n (gridViewportBoundingRectangle.bottom - threshold)) /\r\n 60);\r\n\r\n if (\r\n this.gridViewport.scrollHeight -\r\n this.gridViewport.scrollTop ===\r\n this.gridViewport.clientHeight\r\n )\r\n clearInterval(this.scrollInterval);\r\n }, 50);\r\n }\r\n }\r\n\r\n bind(bindingContext, overrideContext) {\r\n this.overrideContext = overrideContext;\r\n }\r\n\r\n updateGridDataSubscription() {\r\n if (this.gridDataSubscription) {\r\n this.gridDataSubscription.dispose();\r\n this.gridDataSubscription = null;\r\n }\r\n\r\n if (!this.gridData) return;\r\n\r\n this.gridDataSubscription = this.bindingEngine\r\n .collectionObserver(this.gridData)\r\n .subscribe(this.gridDataCollectionChanged.bind(this));\r\n }\r\n\r\n gridDataChanged(supressSetRowData) {\r\n if (this.gridApi) {\r\n this.updateGridDataSubscription();\r\n this.refresh();\r\n }\r\n }\r\n\r\n gridDataCollectionChanged(changeRecords) {\r\n for (let changeRecord of changeRecords) {\r\n let rowDataTransaction = {};\r\n\r\n if (changeRecord.addedCount) {\r\n rowDataTransaction.addIndex = changeRecord.index;\r\n rowDataTransaction.add = [];\r\n\r\n for (\r\n var i = changeRecord.index;\r\n i < changeRecord.index + changeRecord.addedCount;\r\n i++\r\n )\r\n rowDataTransaction.add.push(this.gridData[i]);\r\n }\r\n\r\n if (changeRecord.removed && changeRecord.removed.length)\r\n rowDataTransaction.remove = changeRecord.removed;\r\n\r\n this.gridApi.applyTransaction(rowDataTransaction);\r\n }\r\n }\r\n\r\n refresh() {\r\n this.gridApi.setRowData(this.gridData);\r\n }\r\n\r\n gridOptionsChanged() {\r\n this.reinitialize();\r\n }\r\n\r\n reinitialize() {\r\n this.destroy();\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n if (!this.gridOptions) return;\r\n\r\n this.gridOptions.suppressLoadingOverlay = true;\r\n this.gridOptions.suppressNoRowsOverlay = true;\r\n this.gridOptions.suppressColumnVirtualisation = true;\r\n this.gridOptions.suppressContextMenu = true;\r\n\r\n if (!this.gridOptions.rowHeight) this.gridOptions.rowHeight = 60;\r\n\r\n if (!this.gridOptions.headerHeight) this.gridOptions.headerHeight = 45;\r\n\r\n if (this.gridOptions.columnDefs)\r\n for (let columnDef of this.gridOptions.columnDefs) {\r\n let template =\r\n columnDef.template ?? this.templateMap.get(columnDef);\r\n if (template) {\r\n columnDef.cellRenderer = this.createCellRenderer(\r\n this.container,\r\n ``,\r\n );\r\n this.templateMap.set(columnDef, template);\r\n delete columnDef.template;\r\n } else if (\r\n columnDef.field &&\r\n !columnDef.valueFormatter &&\r\n !columnDef.valueGetter\r\n ) {\r\n columnDef.cellRenderer = this.createCellRenderer(\r\n this.container,\r\n \"\",\r\n );\r\n\r\n if (!columnDef.tooltip && !columnDef.tooltipField)\r\n columnDef.tooltipField = columnDef.field;\r\n }\r\n\r\n let headerCellTemplate =\r\n columnDef.headerCellTemplate ??\r\n this.headerTemplateMap.get(columnDef);\r\n if (headerCellTemplate) {\r\n columnDef.headerComponent = this.createHeaderComponent(\r\n this.container,\r\n ``,\r\n );\r\n this.headerTemplateMap.set(columnDef, headerCellTemplate);\r\n delete columnDef.headerCellTemplate;\r\n }\r\n\r\n let groupTemplate =\r\n columnDef.groupTemplate ??\r\n this.groupTemplateMap.get(columnDef);\r\n if (groupTemplate) {\r\n this.gridOptions.groupRowRenderer =\r\n this.createGroupRenderer(\r\n this.container,\r\n ``,\r\n );\r\n this.groupTemplateMap.set(columnDef, groupTemplate);\r\n delete columnDef.groupTemplate;\r\n }\r\n\r\n if (!columnDef.headerTooltip && columnDef.headerName)\r\n columnDef.headerTooltip = columnDef.headerName;\r\n }\r\n\r\n if (this.gridData) {\r\n this.gridOptions.rowData = this.gridData;\r\n this.updateGridDataSubscription();\r\n }\r\n\r\n this.gridOptions.container = this.container;\r\n this.gridOptions.viewCompiler = this.viewCompiler;\r\n this.gridOptions.overrideContext = this.overrideContext;\r\n\r\n if (this.saveColumnState) {\r\n const {\r\n onGridReady,\r\n onColumnMoved,\r\n onColumnResized,\r\n onSortChanged,\r\n } = this.gridOptions;\r\n this.gridOptions.onGridReady = () =>\r\n this.loadColumnStateFromLocalStorage(onGridReady);\r\n this.gridOptions.onColumnMoved = () =>\r\n this.saveColumnStateToLocalStorage(onColumnMoved);\r\n this.gridOptions.onColumnResized = () =>\r\n this.saveColumnStateToLocalStorage(onColumnResized);\r\n this.gridOptions.onSortChanged = () =>\r\n this.saveColumnStateToLocalStorage(onSortChanged);\r\n }\r\n\r\n new Grid(\r\n this.element,\r\n this.gridOptions,\r\n this.globalEventListener.bind(this),\r\n );\r\n\r\n this.gridApi = this.gridOptions.api;\r\n this.gridOptions.onFirstDataRendered = () =>\r\n this.gridApi.sizeColumnsToFit;\r\n\r\n setTimeout(() => {\r\n if (this.element.au['full-height'])\r\n this.element.au['full-height'].viewModel.setHeight();\r\n });\r\n\r\n if (this.gridOptions.enableRangeSelection) {\r\n this.gridViewport = this.element.querySelector('.ag-body-viewport');\r\n this.gridViewport.addEventListener(\r\n 'mousedown',\r\n this.handleMouseDown,\r\n );\r\n this.gridViewport.addEventListener(\r\n 'mousemove',\r\n this.handleMouseMove,\r\n );\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.gridDataSubscription) {\r\n this.gridDataSubscription.dispose();\r\n this.gridDataSubscription = null;\r\n }\r\n\r\n if (this.gridApi) {\r\n this.gridApi.destroy();\r\n this.gridApi = null;\r\n }\r\n\r\n if (this.gridViewport) {\r\n this.gridViewport.removeEventListener(\r\n 'mousedown',\r\n this.handleMouseDown,\r\n );\r\n this.gridViewport.removeEventListener(\r\n 'mousemove',\r\n this.handleMouseMove,\r\n );\r\n }\r\n }\r\n\r\n attached() {\r\n this.initialize();\r\n document.addEventListener('mouseup', this.handleMouseUp);\r\n }\r\n\r\n globalEventListener(eventType, event) {\r\n this.element.dispatchEvent(\r\n new CustomEvent(eventType.toLowerCase(), {\r\n bubbles: true,\r\n detail: event,\r\n }),\r\n );\r\n }\r\n\r\n detached() {\r\n document.removeEventListener('mouseup', this.handleMouseUp);\r\n this.destroy();\r\n }\r\n\r\n createHeaderComponent(container, template) {\r\n let viewCompiler = this.viewCompiler;\r\n let overrideContext = this.overrideContext;\r\n\r\n return class CustomHeaderComponent {\r\n init(params) {\r\n this.eGui = document.createElement('div');\r\n\r\n var viewFactory = viewCompiler.compile(template);\r\n var view = viewFactory.create(container);\r\n view.bind(params, overrideContext);\r\n view.appendNodesTo(this.eGui);\r\n }\r\n\r\n getGui() {\r\n return this.eGui;\r\n }\r\n };\r\n }\r\n\r\n createCellRenderer(container, template) {\r\n var localSupressCellRenderRefresh = this.supressCellRenderRefresh;\r\n var localViewCompiler = this.viewCompiler;\r\n var localOverrideContext = this.overrideContext;\r\n return class CustomCellRenderer {\r\n constructor() {\r\n var viewFactory = localViewCompiler.compile(template);\r\n this.view = viewFactory.create(container);\r\n this.rootElement = document.createElement('div');\r\n this.rootElement.setAttribute(\r\n 'style',\r\n 'display: inline-block; width: 100%',\r\n );\r\n }\r\n\r\n init(params) {\r\n this.refresh(params);\r\n this.initialized = true;\r\n }\r\n\r\n getGui() {\r\n return this.rootElement;\r\n }\r\n\r\n refresh(params) {\r\n if (this.initialized && localSupressCellRenderRefresh) return;\r\n\r\n this.view.bind(params, localOverrideContext);\r\n this.view.appendNodesTo(this.rootElement);\r\n this.view.attached();\r\n }\r\n\r\n destroy() {\r\n this.view.unbind();\r\n this.view.removeNodes();\r\n this.view.detached();\r\n }\r\n };\r\n }\r\n\r\n createGroupRenderer(container, template) {\r\n var localViewCompiler = this.viewCompiler;\r\n var localOverrideContext = this.overrideContext;\r\n return class CustomGroupRenderer {\r\n constructor() {\r\n var viewFactory = localViewCompiler.compile(template);\r\n this.view = viewFactory.create(container);\r\n this.rootElement = document.createElement('span');\r\n this.rootElement.classList.add('group-head');\r\n }\r\n\r\n init(params) {\r\n this.refresh(params);\r\n }\r\n\r\n getGui() {\r\n return this.rootElement;\r\n }\r\n\r\n refresh(params) {\r\n this.view.bind(params, localOverrideContext);\r\n this.view.appendNodesTo(this.rootElement);\r\n this.view.attached();\r\n }\r\n\r\n destroy() {\r\n this.view.unbind();\r\n this.view.removeNodes();\r\n this.view.detached();\r\n }\r\n };\r\n }\r\n\r\n loadColumnStateFromLocalStorage(base) {\r\n if (!this.saveColumnState) {\r\n base?.call();\r\n return;\r\n }\r\n\r\n const columnStateString = localStorage.getItem(\r\n this.columnStateLocalStorageKey,\r\n );\r\n if (!columnStateString) {\r\n base?.call();\r\n return;\r\n }\r\n\r\n const columnState = JSON.parse(columnStateString);\r\n this.overrideInvisibleColumnWidths(columnState);\r\n this.gridOptions.columnApi.applyColumnState({\r\n state: columnState,\r\n applyOrder: true,\r\n });\r\n\r\n base?.call();\r\n }\r\n\r\n saveColumnStateToLocalStorage(base) {\r\n if (!this.saveColumnState) {\r\n base?.call();\r\n return;\r\n }\r\n\r\n if (this.saveColumnStateDebounce)\r\n clearTimeout(this.saveColumnStateDebounce);\r\n\r\n this.saveColumnStateDebounce = setTimeout(() => {\r\n this.saveColumnStateDebounce = null;\r\n\r\n const columnState = this.gridOptions.columnApi.getColumnState();\r\n const trimmedColumnState = columnState.map((c) => ({\r\n colId: c.colId,\r\n sort: c.sort,\r\n sortIndex: c.sortIndex,\r\n width: c.width,\r\n }));\r\n localStorage.setItem(\r\n this.columnStateLocalStorageKey,\r\n JSON.stringify(trimmedColumnState),\r\n );\r\n }, 1000);\r\n\r\n base?.call();\r\n }\r\n\r\n overrideInvisibleColumnWidths(columnState) {\r\n columnState.forEach((col) => {\r\n if (col.width && col.width < this.minColumnStateColumnWidth) {\r\n delete col.width;\r\n }\r\n });\r\n\r\n return columnState;\r\n }\r\n}\r\n\r\nexport { DataGrid };\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class DataTogglerCustomAttribute {\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n attached() {\r\n this.$toggler = $(this.element);\r\n this.$toggler.foundation();\r\n }\r\n\r\n detached() {\r\n if( !this.$toggler)\r\n return;\r\n\r\n var toggler = this.$toggler.data('zfPlugin');\r\n toggler?.destroy();\r\n }\r\n};\r\n","import { inject, bindable, bindingMode } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\nimport 'foundation-datepicker-js';\r\nimport { formatDate, parseDate } from './datepicker-patch';\r\n\r\nfunction UTCDate() {\r\n return new Date(Date.UTC.apply(Date, arguments));\r\n}\r\n\r\nlet dates = $.fn.fdatepicker.dates;\r\nlet DPGlobal = $.fn.fdatepicker.DPGlobal;\r\n\r\n// override for inclusion of AM/PM indicator\r\nDPGlobal.validParts = /hh?|ii?|ss?|dd?|mm?|MM?|yy(?:yy)?|a/g;\r\n\r\nDPGlobal.parseDate = parseDate;\r\nDPGlobal.formatDate = formatDate;\r\n\r\n// Add initialized property in order to lazy load component (since it normally runs the 'update' method four times unnecessarily).\r\n$.fn.fdatepicker.Constructor.prototype.initialized = false;\r\n\r\n$.fn.fdatepicker.Constructor.prototype.click = function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if ($(e.target).hasClass('datepicker-close') || $(e.target).parent().hasClass('datepicker-close')) {\r\n this.hide();\r\n }\r\n\r\n var target = $(e.target).closest('span, td, th');\r\n if (target.length == 1) {\r\n if (target.is('.disabled')) {\r\n this.element.trigger({\r\n type: 'outOfRange',\r\n date: this.viewDate,\r\n startDate: this.startDate,\r\n endDate: this.endDate\r\n });\r\n return;\r\n }\r\n\r\n switch (target[0].nodeName.toLowerCase()) {\r\n case 'th':\r\n switch (target[0].className) {\r\n case 'date-switch':\r\n this.showMode(1);\r\n break;\r\n case 'prev':\r\n case 'next':\r\n var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);\r\n switch (this.viewMode) {\r\n case 0:\r\n this.viewDate = this.moveHour(this.viewDate, dir);\r\n break;\r\n case 1:\r\n this.viewDate = this.moveDate(this.viewDate, dir);\r\n break;\r\n case 2:\r\n this.viewDate = this.moveMonth(this.viewDate, dir);\r\n break;\r\n case 3:\r\n case 4:\r\n this.viewDate = this.moveYear(this.viewDate, dir);\r\n break;\r\n }\r\n this.fill();\r\n break;\r\n case 'today':\r\n var date = new Date();\r\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());\r\n\r\n this.viewMode = this.startViewMode;\r\n this.showMode(0);\r\n this._setDate(date);\r\n break;\r\n }\r\n break;\r\n\r\n case 'span':\r\n if (!target.is('.disabled')) {\r\n if (target.is('.month')) {\r\n if (this.minView === 3) {\r\n var month = target.parent().find('span').index(target) || 0;\r\n var year = this.viewDate.getUTCFullYear(),\r\n day = 1,\r\n hours = this.viewDate.getUTCHours(),\r\n minutes = this.viewDate.getUTCMinutes(),\r\n seconds = this.viewDate.getUTCSeconds();\r\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\r\n } else {\r\n this.viewDate.setUTCDate(1);\r\n let month = target.parent().find('span').index(target);\r\n this.viewDate.setUTCMonth(month);\r\n this.element.trigger({\r\n type: 'changeMonth',\r\n date: this.viewDate\r\n });\r\n }\r\n } else if (target.is('.year')) {\r\n if (this.minView === 4) {\r\n let year = parseInt(target.text(), 10) || 0;\r\n let month = 0,\r\n day = 1,\r\n hours = this.viewDate.getUTCHours(),\r\n minutes = this.viewDate.getUTCMinutes(),\r\n seconds = this.viewDate.getUTCSeconds();\r\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\r\n } else {\r\n this.viewDate.setUTCDate(1);\r\n let year = parseInt(target.text(), 10) || 0;\r\n this.viewDate.setUTCFullYear(year);\r\n this.element.trigger({\r\n type: 'changeYear',\r\n date: this.viewDate\r\n });\r\n }\r\n } else if (target.is('.hour')) {\r\n let hours;\r\n if(this.nonMilitaryTime){\r\n if (target.text().indexOf(\"AM\") >= 0){\r\n hours = parseInt(target.text(), 10) || 0;\r\n if (hours === 12)\r\n hours = 0;\r\n }\r\n else{\r\n hours = (parseInt(target.text(), 10) + 12 || 0);\r\n if (hours === 24)\r\n hours = 12;\r\n }\r\n }\r\n else{\r\n hours = parseInt(target.text(), 10) || 0;\r\n }\r\n let year = this.viewDate.getUTCFullYear(),\r\n month = this.viewDate.getUTCMonth(),\r\n day = this.viewDate.getUTCDate(),\r\n minutes = this.viewDate.getUTCMinutes(),\r\n seconds = this.viewDate.getUTCSeconds();\r\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\r\n } else if (target.is('.minute')) {\r\n let minutes = parseInt(target.text().substr(target.text().indexOf(':') + 1), 10) || 0;\r\n let year = this.viewDate.getUTCFullYear(),\r\n month = this.viewDate.getUTCMonth(),\r\n day = this.viewDate.getUTCDate(),\r\n hours = this.viewDate.getUTCHours(),\r\n seconds = this.viewDate.getUTCSeconds();\r\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\r\n }\r\n\r\n if (this.viewMode != 0) {\r\n let oldViewMode = this.viewMode;\r\n this.showMode(-1);\r\n this.fill();\r\n if (oldViewMode == this.viewMode && this.autoclose) {\r\n this.hide();\r\n }\r\n } else {\r\n this.fill();\r\n if (this.autoclose) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n break;\r\n case 'td':\r\n if (target.is('.day') && !target.is('.disabled')) {\r\n let day = parseInt(target.text(), 10) || 1;\r\n let year = this.viewDate.getUTCFullYear(),\r\n month = this.viewDate.getUTCMonth(),\r\n hours = this.viewDate.getUTCHours(),\r\n minutes = this.viewDate.getUTCMinutes(),\r\n seconds = this.viewDate.getUTCSeconds();\r\n if (target.is('.old')) {\r\n if (month === 0) {\r\n month = 11;\r\n year -= 1;\r\n } else {\r\n month -= 1;\r\n }\r\n } else if (target.is('.new')) {\r\n if (month == 11) {\r\n month = 0;\r\n year += 1;\r\n } else {\r\n month += 1;\r\n }\r\n }\r\n this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0));\r\n }\r\n\r\n var prevViewMode = this.viewMode;\r\n\r\n this.showMode(-1);\r\n\r\n this.fill();\r\n if (prevViewMode == this.viewMode && this.autoclose) {\r\n this.hide();\r\n }\r\n break;\r\n }\r\n }\r\n}\r\n\r\n$.fn.fdatepicker.Constructor.prototype.fill = function () {\r\n // Short circuit if called prior to the constructor running. (That is performed below in the Datepicker.attached method.)\r\n if (!this.initialized)\r\n return;\r\n\r\n if (this.date == null || this.viewDate == null) {\r\n return;\r\n }\r\n\r\n var d = new Date(this.viewDate.valueOf()),\r\n year = d.getUTCFullYear(),\r\n month = d.getUTCMonth(),\r\n dayMonth = d.getUTCDate(),\r\n hours = d.getUTCHours(),\r\n minutes = d.getUTCMinutes(),\r\n startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,\r\n startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,\r\n endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,\r\n endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,\r\n currentDate = this.date && UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate()).valueOf(),\r\n today = new Date(),\r\n titleFormat = dates[this.language].titleFormat || dates['en'].titleFormat;\r\n // this.picker.find('.datepicker-days thead th.date-switch')\r\n // \t\t\t.text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.language));\r\n\r\n this.picker.find('.datepicker-days thead th:eq(1)')\r\n .text(dates[this.language].months[month] + ' ' + year);\r\n this.picker.find('.datepicker-hours thead th:eq(1)')\r\n .text(dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);\r\n this.picker.find('.datepicker-minutes thead th:eq(1)')\r\n .text(dayMonth + ' ' + dates[this.language].months[month] + ' ' + year);\r\n\r\n\r\n this.picker.find('tfoot th.today')\r\n .text(dates[this.language].today)\r\n .toggle(this.todayBtn !== false);\r\n this.updateNavArrows();\r\n this.fillMonths();\r\n var prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0),\r\n day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\r\n prevMonth.setUTCDate(day);\r\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7);\r\n var nextMonth = new Date(prevMonth.valueOf());\r\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\r\n nextMonth = nextMonth.valueOf();\r\n var html = [];\r\n var clsName;\r\n\r\n let startDate = (() => {\r\n if (this.startDate === -Infinity)\r\n return -Infinity;\r\n\r\n let date = new Date(this.startDate.getTime() - this.startDate.getTimezoneOffset() * 60000);\r\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\r\n })();\r\n\r\n let endDate = (() => {\r\n if (this.endDate === Infinity)\r\n return Infinity;\r\n\r\n let date = new Date(this.endDate.getTime() - this.endDate.getTimezoneOffset() * 60000);\r\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\r\n })();\r\n\r\n while (prevMonth.valueOf() < nextMonth) {\r\n if (prevMonth.getUTCDay() == this.weekStart) {\r\n html.push('');\r\n if (this.calendarWeeks) {\r\n // adapted from https://github.com/timrwood/moment/blob/master/moment.js#L128\r\n var a = new Date(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth(), prevMonth.getUTCDate() - prevMonth.getDay() + 10 - (this.weekStart && this.weekStart % 7 < 5 && 7)),\r\n b = new Date(a.getFullYear(), 0, 4),\r\n calWeek = ~~((a - b) / 864e5 / 7 + 1.5);\r\n html.push('' + calWeek + '');\r\n }\r\n }\r\n clsName = ' ' + this.onRender(prevMonth) + ' ';\r\n if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {\r\n clsName += ' old';\r\n } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {\r\n clsName += ' new';\r\n }\r\n // Compare internal UTC date with local today, not UTC today\r\n if (this.todayHighlight &&\r\n prevMonth.getUTCFullYear() == today.getFullYear() &&\r\n prevMonth.getUTCMonth() == today.getMonth() &&\r\n prevMonth.getUTCDate() == today.getDate()) {\r\n clsName += ' today';\r\n }\r\n if (currentDate && prevMonth.valueOf() == currentDate) {\r\n clsName += ' active';\r\n }\r\n\r\n var currDate = new Date(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth(), prevMonth.getUTCDate());\r\n\r\n if (currDate < startDate || currDate > endDate ||\r\n //if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate ||\r\n $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 ||\r\n $.inArray(prevMonth.valueOf(), this.datesDisabled) !== -1) {\r\n clsName += ' disabled';\r\n }\r\n html.push('' + prevMonth.getUTCDate() + '');\r\n if (prevMonth.getUTCDay() == this.weekEnd) {\r\n html.push('');\r\n }\r\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\r\n }\r\n this.picker.find('.datepicker-days tbody').empty().append(html.join(''));\r\n\r\n html = [];\r\n for (let i = 0; i < 24; i++) {\r\n let actual = UTCDate(year, month, dayMonth, i);\r\n clsName = '';\r\n // We want the previous hour for the startDate\r\n if ((actual.valueOf() + 3600000) < this.startDate || actual.valueOf() > this.endDate) {\r\n clsName += ' disabled';\r\n } else if (hours == i) {\r\n clsName += ' active';\r\n }\r\n if(this.nonMilitaryTime){\r\n let tts = (i%12);\r\n tts = (tts == 0 ? 12 : tts)\r\n let ampm = \"AM\"\r\n if(i>=12 && i<=23){\r\n ampm = \"PM\"\r\n }\r\n html.push('' + tts + ':00 '+ ampm + '');\r\n }\r\n else{\r\n html.push('' + i + ':00');\r\n }\r\n }\r\n this.picker.find('.datepicker-hours td').html(html.join(''));\r\n\r\n html = [];\r\n for (let i = 0; i < 60; i += this.minuteStep) {\r\n let actual = UTCDate(year, month, dayMonth, hours, i);\r\n clsName = '';\r\n if (actual.valueOf() < this.startDate || actual.valueOf() > this.endDate) {\r\n clsName += ' disabled';\r\n } else if (Math.floor(minutes / this.minuteStep) == Math.floor(i / this.minuteStep)) {\r\n clsName += ' active';\r\n }\r\n if(this.nonMilitaryTime){\r\n let tts = (hours%12);\r\n tts = (tts == 0 ? 12 : tts)\r\n let ampm = \"AM\"\r\n if(hours>=12 && hours<=23){\r\n ampm = \"PM\"\r\n }\r\n html.push('' + tts + ':'+ (i < 10 ? '0' + i : i) +' '+ ampm + '');\r\n }\r\n else{\r\n html.push('' + hours + ':' + (i < 10 ? '0' + i : i) + '');\r\n }\r\n }\r\n this.picker.find('.datepicker-minutes td').html(html.join(''));\r\n\r\n var currentYear = this.date && this.date.getUTCFullYear();\r\n var months = this.picker.find('.datepicker-months')\r\n .find('th:eq(1)')\r\n .text(year)\r\n .end()\r\n .find('span').removeClass('active');\r\n if (currentYear && currentYear == year) {\r\n months.eq(this.date.getUTCMonth()).addClass('active');\r\n }\r\n if (year < startYear || year > endYear) {\r\n months.addClass('disabled');\r\n }\r\n if (year == startYear) {\r\n months.slice(0, startMonth).addClass('disabled');\r\n }\r\n if (year == endYear) {\r\n months.slice(endMonth + 1).addClass('disabled');\r\n }\r\n\r\n html = '';\r\n year = parseInt(year / 10, 10) * 10;\r\n var yearCont = this.picker.find('.datepicker-years')\r\n .find('th:eq(1)')\r\n .text(year + '-' + (year + 9))\r\n .end()\r\n .find('td');\r\n year -= 1;\r\n for (var i = -1; i < 11; i++) {\r\n html += ' endYear ? ' disabled' : '') + '\">' + year + '';\r\n year += 1;\r\n }\r\n yearCont.html(html);\r\n};\r\n\r\n\r\nvar originalShow = $.fn.fdatepicker.Constructor.prototype.show;\r\n$.fn.fdatepicker.Constructor.prototype.show = function (e) {\r\n if (this.disabled) {\r\n this.element[0].blur();\r\n return;\r\n }\r\n\r\n originalShow.call(this, e);\r\n}\r\n\r\n@inject(Element)\r\nexport class Datepicker {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value;\r\n @bindable disabled;\r\n @bindable pickTime = false;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) minSelectableDate = -Infinity;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) maxSelectableDate = Infinity;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) inline = false;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.element.classList.add('input-icon');\r\n }\r\n\r\n attached() {\r\n this.isAttached = true;\r\n this.ensureInitialized();\r\n }\r\n \r\n handleFocus() {\r\n this.ensureInitialized(true);\r\n }\r\n\r\n handleBlur() {\r\n this.updateValue();\r\n }\r\n\r\n show() {\r\n this.ensureInitialized(true);\r\n }\r\n\r\n ensureInitialized(show) {\r\n if (!this.isAttached || this.$datepicker) {\r\n if (show)\r\n this.$datepicker.data('datepicker').show();\r\n\r\n return;\r\n }\r\n\r\n this.inputElement = this.element.querySelector('input');\r\n this.$datepicker = $(this.inputElement);\r\n this.$datepicker\r\n .fdatepicker({\r\n forceParse: false,\r\n format: this.pickTime ? 'mm/dd/yyyy hh:ii a' : 'mm/dd/yyyy',\r\n pickTime: this.pickTime,\r\n startDate: this.minSelectableDate,\r\n endDate: this.maxSelectableDate,\r\n nonMilitaryTime: true\r\n })\r\n .on('changeDate', this.updateValue.bind(this));\r\n\r\n // Get the datepicker component, once it is initialized.\r\n // Set the initialized property and call the 'update' method to force the call to the 'fill' method to popluate the UI.\r\n let datepicker = this.$datepicker.data('datepicker');\r\n datepicker.initialized = true;\r\n\r\n if (this.value)\r\n this.setDatePickerValue(new Date(this.value));\r\n\r\n datepicker.update();\r\n\r\n if (show)\r\n datepicker.show();\r\n\r\n this.$datepicker.disabled = !!this.disabled;\r\n }\r\n\r\n detached() {\r\n this.$datepicker && this.$datepicker.fdatepicker('remove');\r\n }\r\n\r\n valueChanged() {\r\n this.setDatePickerValue(!this.value ? null : new Date(this.value));\r\n }\r\n\r\n setDatePickerValue(value) {\r\n let datepicker = this.$datepicker?.data('datepicker');\r\n if (!datepicker)\r\n return;\r\n\r\n if (value) {\r\n datepicker.setDate(value);\r\n } else {\r\n // HACK: Since datepicker doesn't support setting an empty value in setDate method.\r\n datepicker.element.val('');\r\n }\r\n }\r\n\r\n // NOTE: This is used publicly to ensure the value is update prior to destruction in the data grid.\r\n updateValue() {\r\n let datepicker = this.$datepicker?.data('datepicker');\r\n if (!datepicker)\r\n return;\r\n\r\n function checkValid(value) {\r\n if (!value)\r\n return false;\r\n\r\n var dateTimeParts = value.split(' ');\r\n var dateParts = dateTimeParts[0].split('/');\r\n if (dateParts.length !== 3 || dateParts[2].length !== 4)\r\n return false;\r\n\r\n return !isNaN(new Date(value).getTime())\r\n }\r\n\r\n var stringValue = datepicker.element.val();\r\n this.value = stringValue && checkValid(stringValue) ?\r\n datepicker.getDate() :\r\n // HACK: If this.value is undefined, do not force a null value since it would trigger \r\n // a change on value which would in turn trigger validation.\r\n this.value === undefined ? undefined : null;\r\n }\r\n\r\n minSelectableDateChanged() {\r\n if (!this.$datepicker)\r\n return;\r\n this.$datepicker.data().datepicker.setStartDate(this.minSelectableDate);\r\n }\r\n\r\n maxSelectableDateChanged() {\r\n if (!this.$datepicker)\r\n return;\r\n this.$datepicker.data().datepicker.setEndDate(this.maxSelectableDate);\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { bindable, inject } from 'aurelia-framework';\r\nimport Chart from 'chart.js';\r\n\r\nChart.defaults.global.responsive = true;\r\nChart.defaults.global.defaultFontFamily = 'Raleway,sans-serif';\r\n\r\n@inject(Element)\r\nexport class DoughnutChart {\r\n @bindable header;\r\n @bindable footnote;\r\n @bindable chartData;\r\n @bindable linkUrl;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n chartDataChanged() {\r\n this.applyChartData();\r\n }\r\n\r\n attached() {\r\n this.chartCanvas = this.element.querySelector('canvas');\r\n this.doughnutChart = new Chart(this.chartCanvas.getContext('2d'), {\r\n type: 'doughnut',\r\n options: {\r\n animation: {\r\n duration: 2000\r\n },\r\n cutoutPercentage: 75,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: false,\r\n },\r\n tooltips: {\r\n enabled: false,\r\n }\r\n }\r\n });\r\n\r\n this.applyChartData();\r\n }\r\n\r\n applyChartData() {\r\n if (!this.chartData || !this.doughnutChart)\r\n return;\r\n\r\n var data = this.chartData.datapoints && this.chartData.datapoints.map(dp => dp.value);\r\n var noData = !!this.chartData.errorMessage || !data.some(value => value);\r\n\r\n this.doughnutChart.data = {\r\n labels: noData ? [] : this.chartData.datapoints.map(dp => dp.label),\r\n datasets: [{\r\n backgroundColor: noData ? [] : this.chartData.datapoints.map(dp => dp.backgroundColor),\r\n borderWidth: 1,\r\n borderColor: '#543c44',\r\n data: noData ? [] : data\r\n }] \r\n };\r\n\r\n this.doughnutChart.update();\r\n }\r\n\r\n detached() {\r\n if (this.doughnutChart)\r\n this.doughnutChart.destroy();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport class ErrorTooltip {\r\n @bindable message;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isVisible = false;\r\n\r\n tooltip;\r\n tooltipContainer;\r\n\r\n constructor() {\r\n this.isVisible = false;\r\n }\r\n\r\n isVisibleChanged() {\r\n this.initialize();\r\n }\r\n\r\n messageChanged() {\r\n this.initialize();\r\n }\r\n\r\n destroy() {\r\n this.tooltip && this.tooltip.destroy();\r\n }\r\n\r\n initialize() {\r\n if (!this.tooltipContainer || !this.isVisible)\r\n return;\r\n\r\n this.destroy();\r\n this.tooltip = new Foundation.Tooltip($(this.tooltipContainer), { tipText: this.message });\r\n }\r\n\r\n attached() {\r\n this.initialize();\r\n }\r\n\r\n detached() {\r\n this.destroy();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode, inject, computedFrom, autoinject } from 'aurelia-framework';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport DateRangeFilterOption from './date-range-filter-option';\r\n\r\nvar msInOneDay = 24 * 60 * 60 * 1000;\r\n\r\nexport function createDateRangeFilterOption(value, caption, numericValue = 0, isFuture = false): DateRangeFilterOption {\r\n var startDate = null;\r\n var endDate = null;\r\n\r\n if (value !== 'custom') {\r\n let now = new Date();\r\n if (isFuture) {\r\n startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n endDate = new Date(startDate.getTime() + (numericValue * msInOneDay));\r\n } else {\r\n endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n startDate = new Date(endDate.getTime() - (numericValue * msInOneDay));\r\n }\r\n }\r\n \r\n return {\r\n value,\r\n caption,\r\n numericValue,\r\n startDate,\r\n endDate\r\n } as DateRangeFilterOption;\r\n}\r\n\r\nexport function createDateRangeFilterOptions(): DateRangeFilterOption[] {\r\n return [\r\n createDateRangeFilterOption('last7Days', 'Last 7 Days', 7),\r\n createDateRangeFilterOption('last30Days', 'Last 30 Days', 30),\r\n createDateRangeFilterOption('last60Days', 'Last 60 Days', 60),\r\n createDateRangeFilterOption('last90Days', 'Last 90 Days', 90),\r\n createDateRangeFilterOption('custom', 'Specific Range')\r\n ] as DateRangeFilterOption[];\r\n}\r\n\r\n@autoinject\r\nexport class DateRangeFilter {\r\n @bindable defaultOption: DateRangeFilterOption;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) options: DateRangeFilterOption[];\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedOption: DateRangeFilterOption;\r\n @bindable pickTime = false;\r\n // Callers that want the dropdown to show something other than `caption` (e.g. a tagged\r\n // `displayCaption`) can override this; everyone else keeps today's plain caption text.\r\n @bindable titlePropertyName = 'caption';\r\n\r\n // subscriptions\r\n clearFilterSubscription: Subscription;\r\n\r\n constructor(private eventAggregator: EventAggregator) {\r\n this.clearDateRange = this.clearDateRange.bind(this);\r\n }\r\n\r\n attached() {\r\n this.clearFilterSubscription = this.eventAggregator.subscribe('filters.clear', this.clearDateRange);\r\n }\r\n\r\n detached() {\r\n this.clearFilterSubscription && this.clearFilterSubscription.dispose();\r\n }\r\n\r\n clearDateRange() {\r\n this.selectedOption = this.options.find(o => o.value === (this.defaultOption.value || this.defaultOption || 'custom'));\r\n }\r\n \r\n @computedFrom('selectedOption.startDate', 'selectedOption.endDate')\r\n get minSelectableDate(): number | Date {\r\n return this.selectedOption && this.selectedOption.startDate ? this.selectedOption.startDate : -Infinity\r\n }\r\n\r\n @computedFrom('selectedOption.startDate', 'selectedOption.endDate')\r\n get maxSelectableDate(): number | Date {\r\n return this.selectedOption && this.selectedOption.endDate ? this.selectedOption.endDate : Infinity;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\n\r\n@inject(EventAggregator)\r\nexport class FilterButtons {\r\n constructor(eventAggregator) {\r\n this.eventAggregator = eventAggregator;\r\n }\r\n\r\n applyFilters() {\r\n this.eventAggregator.publish('filters.apply');\r\n }\r\n\r\n clearFilters() {\r\n this.eventAggregator.publish('filters.clear');\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\n\r\ntype MapPlanFilterType = 'map' | 'plan';\r\n\r\n@autoinject\r\nexport class MapPlanFilter {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) mapSummaryOptions: SelectorOption[];\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) planSummaryOptions: SelectorOption[];\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedFilterType: MapPlanFilterType;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedValues: number[];\r\n\r\n readonly defaultFilterType = 'map';\r\n\r\n // subscriptions\r\n clearFilterSubscription: Subscription;\r\n\r\n constructor(private eventAggregator: EventAggregator) {\r\n this.selectedFilterType = this.selectedFilterType ?? this.defaultFilterType;\r\n this.reset = this.reset.bind(this);\r\n }\r\n\r\n attached() {\r\n this.clearFilterSubscription = this.eventAggregator.subscribe('filters.clear', this.reset);\r\n }\r\n\r\n detached() {\r\n this.clearFilterSubscription && this.clearFilterSubscription.dispose();\r\n }\r\n\r\n reset() {\r\n this.selectedFilterType = this.defaultFilterType;\r\n this.selectedValues = null;\r\n }\r\n\r\n selectedFilterTypeChanged() {\r\n this.selectedValues = null;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\n\r\n@inject(Element, EventAggregator)\r\nexport class OrganizationFilter {\r\n @bindable organizations;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedOrganizations;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isFiltering;\r\n\r\n constructor(element, eventAggregator) {\r\n this.element = element;\r\n this.eventAggregator = eventAggregator;\r\n this.selectedOrganizations = [];\r\n this.isFiltering = false;\r\n this.clearSelectedOrganizations = this.clearSelectedOrganizations.bind(this);\r\n }\r\n\r\n selectedOrganizationsChanged() {\r\n this.isFiltering = !!this.selectedOrganizations.length;\r\n }\r\n\r\n clearSelectedOrganizations() { \r\n this.selectedOrganizations = [];\r\n }\r\n\r\n attached() {\r\n this.clearFilterSubscription = this.eventAggregator.subscribe('filters.clear', this.clearSelectedOrganizations);\r\n }\r\n \r\n detached() {\r\n this.clearFilterSubscription && this.clearFilterSubscription.dispose();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { bindable, bindingMode, inject } from 'aurelia-framework';\r\n\r\n@inject(Element, EventAggregator)\r\nexport class TestMethodFilter {\r\n @bindable testMethods;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedTestMethods;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) isFiltering;\r\n\r\n constructor(element, eventAggregator) {\r\n this.element = element;\r\n this.eventAggregator = eventAggregator;\r\n this.selectedTestMethods = [];\r\n this.isFiltering = false;\r\n this.clearSelectedTestMethods =\r\n this.clearSelectedTestMethods.bind(this);\r\n }\r\n\r\n selectedTestMethodsChanged() {\r\n this.isFiltering = !!this.selectedTestMethods.length;\r\n }\r\n\r\n clearSelectedTestMethods() {\r\n this.selectedTestMethods = [];\r\n }\r\n\r\n attached() {\r\n this.clearFilterSubscription = this.eventAggregator.subscribe(\r\n 'filters.clear',\r\n this.clearSelectedTestMethods\r\n );\r\n }\r\n\r\n detached() {\r\n this.clearFilterSubscription && this.clearFilterSubscription.dispose();\r\n }\r\n}\r\n","module.exports = \"\";","import { Calendar, createElement } from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport momentPlugin from '@fullcalendar/moment';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport { bindable, bindingMode, inject } from 'aurelia-framework';\r\nimport moment from 'moment';\r\nimport DateUtility from '../date-utility';\r\n\r\nclass CustomDayHeader {\r\n render() {\r\n return createElement('div', {}, this.props.text)\r\n }\r\n}\r\n\r\n//export interface FullCalendarEvent {\r\n// id?: string;\r\n// groupId?: string;\r\n// title: string;\r\n// start: string;\r\n// end: string;\r\n// description?: string;\r\n// allDay?: boolean;\r\n// url?: string;\r\n// extendedProps?: any;\r\n// backgroundColor?: string; // override the default\r\n//}\r\n\r\n//export type FullCalendarView = 'dayGridMonth' | 'timeGridWeek';\r\n\r\n@inject(Element)\r\nexport class FullCalendar {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) events;\r\n @bindable navLinks; // can click day/week names to navigate views\r\n @bindable dayMaxEvents; // allow \"more\" link when too many events\r\n @bindable editable;\r\n @bindable initialDate;\r\n @bindable initialView;\r\n\r\n // DOM\r\n calendarElement;\r\n calendar;\r\n \r\n // state\r\n isAttached;\r\n tooltips = [];\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.eventClick = this.eventClick.bind(this);\r\n }\r\n\r\n attached() {\r\n this.initialize();\r\n this.isAttached = true;\r\n }\r\n\r\n detached() {\r\n this.calendar?.destroy();\r\n this.calendar = null;\r\n\r\n this.isAttached = false;\r\n }\r\n\r\n initialize() {\r\n let initialDate =\r\n this.initialDate && typeof this.initialDate === 'string' ? DateUtility.stringToMoment(this.initialDate) : \r\n this.initialDate ? moment(this.initialDate).format('YYYY-MM-DD') :\r\n this.initialDate;\r\n\r\n this.calendar = new Calendar(this.calendarElement, {\r\n plugins: [ momentPlugin, interactionPlugin, dayGridPlugin, timeGridPlugin ],\r\n titleFormat: '{MMMM {D}}, YYYY',\r\n headerToolbar: {\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: 'dayGridMonth,timeGridWeek,timeGridDay',\r\n },\r\n height: '100%',\r\n initialDate: initialDate ?? moment().format('YYYY-MM-DD'),\r\n initialView: 'timeGridWeek',\r\n slotDuration: '00:15',\r\n navLinks: this.navLinks ?? true,\r\n editable: this.editable ?? true,\r\n dayMaxEvents: this.dayMaxEvents ?? true,\r\n dayMaxEventRows: 1,\r\n eventMaxStack: 1,\r\n expandRows: false,\r\n dayHeaderContent(arg) {\r\n return createElement(CustomDayHeader, { text: arg.text })\r\n },\r\n nowIndicator: true,\r\n handleWindowResize: true,\r\n eventClick: this.eventClick,\r\n });\r\n\r\n this.addEventSources();\r\n }\r\n\r\n render() {\r\n this.calendar?.render();\r\n }\r\n\r\n gotoDate(date) {\r\n this.calendar?.gotoDate(date);\r\n }\r\n\r\n switchView(view, date) {\r\n this.calendar?.changeView(view, date);\r\n }\r\n\r\n eventsChanged() {\r\n this.addEventSources();\r\n this.render();\r\n }\r\n\r\n eventClick (info) {\r\n let event = info?.event;\r\n if (event) {\r\n this.element.dispatchEvent(new CustomEvent('fullcalendareventclick', {\r\n bubbles: true,\r\n detail: {\r\n event: event,\r\n element: info.el\r\n }\r\n }));\r\n }\r\n }\r\n\r\n addEventSources() {\r\n if (!this.calendar)\r\n return;\r\n\r\n this.calendar.removeAllEventSources();\r\n this.calendar.addEventSource( {\r\n events: this.events,\r\n });\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable } from 'aurelia-framework';\r\n\r\n@inject(Element)\r\nexport class FullHeightCustomAttribute {\r\n @bindable shrink;\r\n @bindable fixedHeightOverride;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.setHeight = () => {\r\n if (this.fixedHeightOverride) {\r\n this.element.style.height = this.fixedHeightOverride + 'px';\r\n return;\r\n }\r\n\r\n var headerBounds = document.getElementsByTagName('footer')[0].getBoundingClientRect();\r\n var footerTop = headerBounds.y || headerBounds.top;\r\n\r\n var elementBounds = this.element.getBoundingClientRect();\r\n var currentTop = elementBounds.y || elementBounds.top;\r\n\r\n this.element.style.height = (footerTop - currentTop - (this.shrink || 0)) + 'px';\r\n };\r\n }\r\n\r\n fixedHeightOverrideChanged() {\r\n setTimeout(() => this.setHeight());\r\n }\r\n\r\n attached() {\r\n window.addEventListener('optimizedresize', this.setHeight);\r\n window.document.addEventListener('pagecontentsizechange', this.setHeight);\r\n\r\n this.setHeight();\r\n }\r\n\r\n detached() {\r\n window.removeEventListener('optimizedresize', this.setHeight);\r\n window.document.removeEventListener('pagecontentsizechange', this.setHeight);\r\n }\r\n\r\n update() {\r\n setTimeout(() => this.setHeight());\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-framework';\r\n\r\nexport function configure(config) {\r\n config.globalResources([\r\n PLATFORM.moduleName('./accordion'),\r\n PLATFORM.moduleName('./accordion-item'),\r\n PLATFORM.moduleName('./content-size-change'),\r\n PLATFORM.moduleName('./data-dropdown'),\r\n PLATFORM.moduleName('./data-equalizer'),\r\n PLATFORM.moduleName('./data-grid'),\r\n PLATFORM.moduleName('./data-toggler'),\r\n PLATFORM.moduleName('./datepicker'),\r\n PLATFORM.moduleName('./doughnut-chart'),\r\n PLATFORM.moduleName('./mini-doughnut-chart'),\r\n PLATFORM.moduleName('./error-tooltip'),\r\n PLATFORM.moduleName('./full-calendar'),\r\n PLATFORM.moduleName('./full-height'),\r\n PLATFORM.moduleName('./info-tip'),\r\n PLATFORM.moduleName('./keyhold-prevent-focus'),\r\n PLATFORM.moduleName('./notify-form-changes'),\r\n PLATFORM.moduleName('./record-change-list'),\r\n PLATFORM.moduleName('./required'),\r\n PLATFORM.moduleName('./scroll-into-view'),\r\n PLATFORM.moduleName('./select2'),\r\n PLATFORM.moduleName('./select2-item-template'),\r\n PLATFORM.moduleName('./selector'),\r\n PLATFORM.moduleName('./selector-item-template'),\r\n PLATFORM.moduleName('./slider'),\r\n PLATFORM.moduleName('./time-selector'),\r\n PLATFORM.moduleName('./filters/filter-buttons'),\r\n PLATFORM.moduleName('./filters/date-range-filter'),\r\n PLATFORM.moduleName('./filters/organization-filter'),\r\n PLATFORM.moduleName('./filters/map-plan-filter'),\r\n PLATFORM.moduleName('./filters/test-method-filter'),\r\n ]);\r\n}\r\n","import { bindable } from 'aurelia-framework';\r\n\r\nexport class InfoTip {\r\n @bindable message;\r\n tooltipContainer;\r\n\r\n messageChanged() {\r\n this.initialize();\r\n }\r\n\r\n destroy() {\r\n let $element = $(this.tooltipContainer);\r\n let plugin = $element.data('zfPlugin');\r\n plugin?.destroy();\r\n }\r\n\r\n initialize() {\r\n if (!this.tooltipContainer)\r\n return;\r\n\r\n this.destroy();\r\n \r\n new Foundation.Tooltip($(this.tooltipContainer), { tipText: this.message });\r\n }\r\n\r\n attached() {\r\n this.initialize();\r\n }\r\n\r\n detached() {\r\n this.destroy();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\n\r\n@inject(Element)\r\nexport class KeyholdPreventFocusCustomAttribute {\r\n constructor(element) {\r\n this.element = element;\r\n this.handleKeyDown = this.handleKeyDown.bind(this);\r\n this.handleKeyUp = this.handleKeyUp.bind(this);\r\n }\r\n\r\n attached() {\r\n document.addEventListener('keydown', this.handleKeyDown);\r\n document.addEventListener('keyup', this.handleKeyUp);\r\n }\r\n\r\n detached() {\r\n document.removeEventListener('keydown', this.handleKeyDown);\r\n document.removeEventListener('keyup', this.handleKeyUp);\r\n }\r\n\r\n handleKeyDown(event) {\r\n if (this.enabled)\r\n return;\r\n\r\n if (event.shiftKey || event.ctrlKey)\r\n this.enable();\r\n }\r\n\r\n handleKeyUp(event) {\r\n if (this.enabled && !event.shiftKey && !event.ctrlKey)\r\n this.disable();\r\n }\r\n\r\n enable() {\r\n switch (this.element.tagName) {\r\n case 'INPUT':\r\n if (document.activeElement === this.element)\r\n return;\r\n\r\n this.oldDisabledValue = this.element.disabled;\r\n this.element.disabled = true;\r\n break;\r\n\r\n default:\r\n this.element.au?.controller?.viewModel?.disableFocus?.();\r\n }\r\n\r\n this.element.classList.add('keyhold-active');\r\n\r\n this.enabled = true;\r\n }\r\n\r\n disable() {\r\n switch (this.element.tagName) {\r\n case 'INPUT':\r\n this.element.disabled = this.oldDisabledValue;\r\n break;\r\n\r\n default:\r\n this.element.au?.controller?.viewModel?.enableFocus?.();\r\n }\r\n\r\n this.element.classList.remove('keyhold-active');\r\n\r\n this.enabled = false;\r\n }\r\n}\r\n","import { bindable, inject } from 'aurelia-framework';\r\nimport Chart from 'chart.js';\r\n\r\nChart.defaults.global.responsive = true;\r\nChart.defaults.global.defaultFontFamily = 'Raleway,sans-serif';\r\n\r\n@inject(Element)\r\nexport class MiniDoughnutChart {\r\n\r\n @bindable chartData;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n chartDataChanged() {\r\n this.applyChartData();\r\n }\r\n\r\n attached() {\r\n this.chartCanvas = this.element.querySelector('canvas');\r\n this.doughnutChart = new Chart(this.chartCanvas.getContext('2d'), {\r\n type: 'doughnut',\r\n options: {\r\n animation: {\r\n duration: 2000\r\n },\r\n cutoutPercentage: 75,\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: false\r\n },\r\n tooltips: {\r\n enabled: false,\r\n }\r\n }\r\n });\r\n\r\n this.applyChartData();\r\n }\r\n\r\n applyChartData() {\r\n if (!this.chartData || !this.doughnutChart)\r\n return;\r\n\r\n this.doughnutChart.data = {\r\n labels: [],\r\n datasets: [{\r\n backgroundColor: [this.chartData.fillColor],\r\n borderWidth: 1,\r\n borderColor: '#543c44',\r\n data: [this.chartData.value, this.chartData.total - this.chartData.value]\r\n }] \r\n };\r\n\r\n this.doughnutChart.update();\r\n }\r\n\r\n detached() {\r\n if (this.doughnutChart)\r\n this.doughnutChart.destroy();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { bindable, inject } from 'aurelia-framework';\r\n\r\n@inject(Element)\r\nexport class NotifyFormChangesCustomAttribute {\r\n @bindable disabled;\r\n @bindable enableSelect2;\r\n @bindable enableDatepicker;\r\n\r\n // Enables listening for custom events with optional element to listen on (if the element is not a child of this component).\r\n @bindable customEvents; // type: Array\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.handleFormChange = this.handleFormChange.bind(this);\r\n }\r\n\r\n attached() {\r\n this.element.addEventListener('input', this.handleFormChange);\r\n this.element.addEventListener('change', this.handleFormChange);\r\n\r\n if (this.enableDatepicker) {\r\n this.element.addEventListener('datepickerchanged', this.handleFormChange);\r\n this.datepickerAdded = true;\r\n }\r\n\r\n if (this.enableSelect2) {\r\n this.element.addEventListener('select2change', this.handleFormChange);\r\n this.select2Added = true;\r\n }\r\n\r\n if (this.customEvents && this.customEvents.length)\r\n for (let customEvent of this.customEvents) {\r\n if (typeof customEvent === 'string')\r\n this.element.addEventListener(customEvent, this.handleFormChange);\r\n else\r\n customEvent.element.addEventListener(customEvent.event, this.handleFormChange);\r\n }\r\n }\r\n\r\n detached() {\r\n this.element.removeEventListener('input', this.handleFormChange);\r\n this.element.removeEventListener('change', this.handleFormChange);\r\n\r\n if (this.datepickerAdded)\r\n this.element.removeEventListener('datepickerchanged', this.handleFormChange);\r\n\r\n if (this.select2Added) \r\n this.element.removeEventListener('select2change', this.handleFormChange);\r\n\r\n if (this.customEvents && this.customEvents.length)\r\n for (let customEvent of this.customEvents) {\r\n if (typeof customEvent === 'string')\r\n this.element.removeEventListener(customEvent, this.handleFormChange);\r\n else\r\n customEvent.element.removeEventListener(customEvent.event, this.handleFormChange);\r\n }\r\n }\r\n\r\n handleFormChange($event) {\r\n if ($event.srcElement.classList.contains('select2-search__field'))\r\n return;\r\n\r\n if (this.disabled)\r\n return;\r\n\r\n this.element.dispatchEvent(new CustomEvent('formchange', { bubbles: true, detail: { formElement: $event.srcElement } }));\r\n }\r\n}\r\n","import { inject, bindable } from 'aurelia-framework';\r\n\r\n@inject(Element)\r\nexport class RecordChangeList {\r\n @bindable recordTypeTitle;\r\n @bindable recordChanges;\r\n @bindable propertyDisplayNames;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n loadRecordChanges() {\r\n this.element.dispatchEvent(new CustomEvent('loadrecordchanges', { bubbles: true, detail: {} }));\r\n }\r\n\r\n getRelationshipOperationDisplay(operation) {\r\n switch (operation.toLowerCase()) {\r\n case 'add':\r\n return 'Added';\r\n case 'remove':\r\n return 'Removed';\r\n case 'modify':\r\n return 'Modified';\r\n default:\r\n return 'Unknown';\r\n }\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, children } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class RequiredCustomAttribute {\r\n @bindable title: string;\r\n @bindable disabled: boolean | string;\r\n\r\n requiredIndicator: Element;\r\n requiredIndicatorAdded: boolean;\r\n\r\n constructor(private element: Element) {\r\n let i = document.createElement('i');\r\n i.classList.add('fa', 'fa-asterisk');\r\n i.title = this.title ?? 'This field is required.';\r\n\r\n this.requiredIndicator = i;\r\n this.element.appendChild(document.createTextNode(' '));\r\n this.updateIndicatorInDOM();\r\n }\r\n\r\n disabledChanged(newValue, oldValue) {\r\n this.updateIndicatorInDOM();\r\n }\r\n\r\n updateIndicatorInDOM() {\r\n if (this.disabled === true || this.disabled === 'true') {\r\n if (this.requiredIndicatorAdded)\r\n this.element.removeChild(this.requiredIndicator);\r\n } else {\r\n this.element.appendChild(this.requiredIndicator);\r\n this.requiredIndicatorAdded = true;\r\n }\r\n }\r\n\r\n attached() {\r\n if (this.disabled === true || this.disabled === 'true')\r\n return;\r\n\r\n this.updateIndicatorInDOM();\r\n }\r\n}\r\n","import { inject, bindable } from 'aurelia-framework';\r\n\r\n@inject(Element)\r\nexport class ScrollIntoViewCustomAttribute {\r\n @bindable enabled;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n }\r\n\r\n enabledChanged() {\r\n if (!this.enabled)\r\n return;\r\n\r\n var child = this.element;\r\n var parent = child.parentElement;\r\n if (!parent)\r\n return;\r\n\r\n var firstChild = parent.children[0];\r\n\r\n var parentBounds = parent.getBoundingClientRect();\r\n var windowTop = firstChild.getBoundingClientRect().top;\r\n var childBounds = child.getBoundingClientRect();\r\n\r\n if (childBounds.bottom - parentBounds.top > parentBounds.height)\r\n parent.scrollTop = childBounds.top - parentBounds.top;\r\n else if (childBounds.top < parentBounds.top) {\r\n parent.scrollTop = childBounds.top - windowTop;\r\n }\r\n }\r\n};\r\n","import {\r\n Container,\r\n TaskQueue,\r\n ViewCompiler,\r\n bindable,\r\n bindingMode,\r\n child,\r\n inject,\r\n} from 'aurelia-framework';\r\n\r\n@inject(Element, TaskQueue, Container, ViewCompiler)\r\nexport class Select2 {\r\n @bindable enableCustomItems;\r\n @bindable suppressFullWidth;\r\n @bindable placeholder;\r\n @bindable disablePlaceholder;\r\n @bindable items;\r\n @bindable allowClear;\r\n @bindable disabled;\r\n @bindable multiple;\r\n @bindable titlePropertyName;\r\n @bindable valuePropertyName;\r\n @bindable groupPropertyName;\r\n @bindable disabledPropertyName;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedItems;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedItem;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedValues;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedValue;\r\n @bindable minimumResultsForSearch;\r\n @bindable filter;\r\n @child('select2-item-template') itemTemplate;\r\n\r\n constructor(element, taskQueue, container, viewCompiler) {\r\n this.element = element;\r\n this.container = container;\r\n this.viewCompiler = viewCompiler;\r\n this.taskQueue = taskQueue;\r\n\r\n this.closeDropdownOnEnterKey = this.closeDropdownOnEnterKey.bind(this);\r\n }\r\n\r\n disabledChanged() {\r\n if (!this.$select) return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n created(owningView, myView) {\r\n var controller = owningView.controllers.find((c) => c.view === myView);\r\n var boundProperty = controller.boundProperties.find((bp) =>\r\n bp.binding.targetProperty.startsWith('selected'),\r\n ).binding.targetProperty;\r\n this[boundProperty + 'Bound'] = true;\r\n }\r\n\r\n placeholderChanged() {\r\n if (!this.$select) return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n reinitialize() {\r\n // Defer re-initialization to allow the binding of items to mutate the select element.\r\n this.taskQueue.queueTask(() => {\r\n this.destroy();\r\n this.initialize();\r\n this.trySetDefault();\r\n });\r\n }\r\n\r\n itemsChanged() {\r\n if (this.groupPropertyName && this.items) {\r\n this.groupedItems = this.items.reduce((groupedItems, item) => {\r\n let group = item[this.groupPropertyName];\r\n groupedItems.has(group)\r\n ? groupedItems.get(group).push(item)\r\n : groupedItems.set(group, [item]);\r\n\r\n return groupedItems;\r\n }, new Map());\r\n }\r\n\r\n if (!this.$select) return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n itemTemplateChanged() {\r\n if (!this.$select) return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n selectedItemsChanged() {\r\n this.updateSelection();\r\n this.dispatchEvent();\r\n }\r\n\r\n selectedItemChanged() {\r\n this.updateSelection();\r\n this.dispatchEvent();\r\n }\r\n\r\n selectedValuesChanged() {\r\n this.updateSelection();\r\n this.dispatchEvent();\r\n }\r\n\r\n selectedValueChanged() {\r\n this.updateSelection();\r\n this.dispatchEvent();\r\n }\r\n\r\n closeDropdownOnEnterKey(e) {\r\n if (e.keyCode === 13) this.$select && this.$select.select2('close');\r\n }\r\n\r\n attached() {\r\n $('body').on('keydown', 'input.select2-search__field', this.closeDropdownOnEnterKey);\r\n\r\n this.$select = $(this.element.getElementsByTagName('select')[0]);\r\n this.initialize();\r\n }\r\n\r\n dispatchEvent() {\r\n this.element.dispatchEvent(\r\n new CustomEvent('select2change', {\r\n bubbles: true,\r\n detail: {\r\n selectedItems: this.selectedItems,\r\n selectedItem: this.selectedItem,\r\n selectedValues: this.selectedValues,\r\n selectedValue: this.selectedValue,\r\n },\r\n }),\r\n );\r\n }\r\n\r\n detached() {\r\n $('body').off('keydown', 'input.select2-search__field', this.closeDropdownOnEnterKey);\r\n\r\n this.destroy();\r\n this.isDetached = true;\r\n }\r\n\r\n createTag(params) {\r\n if (!params.term || !this.items) return;\r\n\r\n var tag = {\r\n id: params.term,\r\n text: params.term,\r\n tag: true,\r\n };\r\n\r\n tag[this.valuePropertyName || 'value'] = params.term;\r\n tag[this.titlePropertyName || 'title'] = params.term;\r\n\r\n return tag;\r\n }\r\n\r\n insertTag(data, tag) {\r\n this.element.dispatchEvent(\r\n new CustomEvent('tagcreated', {\r\n bubbles: true,\r\n detail: { tag },\r\n }),\r\n );\r\n }\r\n\r\n findItemByValue(items, value) {\r\n // coercion used here intentionally to support int/string/etc\r\n return items.find((item) => {\r\n var itemValue = item[this.valuePropertyName || 'value'];\r\n // Handle boolean string values differently since coersion doesn't work below.\r\n if (typeof itemValue === 'boolean') {\r\n let booleanValue = value === 'true';\r\n return itemValue === booleanValue;\r\n }\r\n\r\n return itemValue == value;\r\n });\r\n }\r\n\r\n initialize() {\r\n this.$select\r\n .select2({\r\n placeholder: this.placeholder || (this.multiple ? 'Select items' : 'Select item'),\r\n minimumResultsForSearch: this.enableCustomItems\r\n ? 0\r\n : this.minimumResultsForSearch || this.minimumResultsForSearch === 0\r\n ? this.minimumResultsForSearch\r\n : Infinity,\r\n allowClear: !!this.allowClear,\r\n dropdownAutoWidth: true,\r\n ...(this.itemTemplate && {\r\n templateResult: (state) => {\r\n let viewFactory = this.viewCompiler.compile(this.itemTemplate.template);\r\n let view = viewFactory.create(this.container);\r\n let rootElement = document.createElement('div');\r\n rootElement.setAttribute('style', 'display: inline-block; width: 100%');\r\n\r\n view.bind(\r\n {\r\n item:\r\n 'id' in state\r\n ? this.findItemByValue(this.items, state.id)\r\n : null,\r\n },\r\n this.itemTemplate.parentBindingContext,\r\n );\r\n view.appendNodesTo(rootElement);\r\n view.attached();\r\n\r\n return rootElement;\r\n },\r\n }),\r\n disabled: !!this.disabled,\r\n tags: !!this.enableCustomItems,\r\n createTag: !!this.enableCustomItems && this.createTag.bind(this),\r\n insertTag: !!this.enableCustomItems && this.insertTag.bind(this),\r\n language: !this.enableCustomItems\r\n ? null\r\n : {\r\n noResults: () => {\r\n return `Press 'Enter' to add this custom text`;\r\n },\r\n },\r\n ...(this.filter && {\r\n matcher: (params, data) => {\r\n if (!params.term) return data;\r\n\r\n let matched =\r\n 'id' in data &&\r\n this.filter(params.term, this.findItemByValue(this.items, data.id));\r\n if (matched) return data;\r\n\r\n return null;\r\n },\r\n }),\r\n })\r\n .on('select2:select', (e) => {\r\n var item = this.findItemByValue(this.items, e.params.data.id);\r\n if (!item) return;\r\n\r\n var selectedItems = this.multiple ? [...this.getSelectedItems(), item] : [item];\r\n\r\n this.setSelection(selectedItems);\r\n })\r\n .on('select2:unselect', (e) => {\r\n var selectedItems = [...this.getSelectedItems()];\r\n var item = this.findItemByValue(selectedItems, e.params.data.id);\r\n var itemToRemoveIndex = selectedItems.indexOf(item);\r\n if (itemToRemoveIndex === -1) return;\r\n\r\n selectedItems.splice(itemToRemoveIndex, 1);\r\n\r\n this.setSelection(selectedItems);\r\n });\r\n\r\n this.trySetDefault();\r\n this.updateSelection();\r\n }\r\n\r\n trySetDefault() {\r\n if (!this.getSelectedValues().length) {\r\n if (this.multiple) {\r\n this.setSelection([]);\r\n } else if (this.disablePlaceholder && this.items && this.items.length) {\r\n this.setSelection(this.items[0]);\r\n }\r\n }\r\n }\r\n\r\n setSelection(selectedItems) {\r\n if (this.selectedItemsBound) this.selectedItems = selectedItems;\r\n else if (this.selectedItemBound)\r\n this.selectedItem = selectedItems.length ? selectedItems[0] : null;\r\n else if (this.selectedValuesBound)\r\n this.selectedValues = selectedItems.length\r\n ? selectedItems.map((i) => i[this.valuePropertyName || 'value'])\r\n : [];\r\n else if (this.selectedValueBound)\r\n this.selectedValue = selectedItems.length\r\n ? selectedItems.map((i) => i[this.valuePropertyName || 'value'])[0]\r\n : null;\r\n }\r\n\r\n updateSelection() {\r\n if (!this.$select) return;\r\n\r\n var values = this.getSelectedValues();\r\n\r\n var finalValue = values.length\r\n ? this.multiple\r\n ? values.map((e) => (typeof e === 'boolean' ? (e ? 'true' : 'false') : e))\r\n : values.map((e) => (typeof e === 'boolean' ? (e ? 'true' : 'false') : e))[0] ??\r\n null\r\n : null;\r\n\r\n this.$select.val(finalValue).trigger('change');\r\n }\r\n\r\n getSelectedValues() {\r\n if (this.selectedItemsBound)\r\n return (this.selectedItems || []).map((i) => i[this.valuePropertyName || 'value']);\r\n else if (this.selectedItemBound)\r\n return this.selectedItem ? [this.selectedItem[this.valuePropertyName || 'value']] : [];\r\n else if (this.selectedValuesBound) return this.selectedValues ?? [];\r\n else if (this.selectedValueBound) return [this.selectedValue ?? null];\r\n\r\n return [];\r\n }\r\n\r\n getSelectedItems() {\r\n var selectedValues = this.getSelectedValues();\r\n\r\n return (this.items || []).filter((i) =>\r\n selectedValues.some((v) => v === i[this.valuePropertyName || 'value']),\r\n );\r\n }\r\n\r\n destroy() {\r\n if (this.isDetached) return;\r\n\r\n this.$select.select2('destroy').off('select2:select').off('select2:unselect');\r\n }\r\n}\r\n","import { inject, TargetInstruction, noView, processContent } from 'aurelia-framework';\r\n\r\nfunction parseElement(compiler, resources, element, instruction) {\r\n var html = element.innerHTML;\r\n if (html !== '')\r\n instruction.template = html;\r\n\r\n element.innerHTML = '';\r\n}\r\n\r\n@inject(TargetInstruction)\r\n@noView\r\n@processContent(parseElement)\r\nexport class Select2ItemTemplate {\r\n constructor(targetInstruction) {\r\n this.template = '';\r\n }\r\n\r\n bind(bindingContext, overrideContext) {\r\n this.parentBindingContext = overrideContext.bindingContext ?? overrideContext;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode, TaskQueue, child, Container, ViewCompiler } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class Selector {\r\n @bindable enableCustomItems;\r\n @bindable suppressFullWidth;\r\n @bindable placeholder;\r\n @bindable items;\r\n @bindable allowClear;\r\n @bindable disabled;\r\n @bindable multiple;\r\n @bindable titlePropertyName;\r\n @bindable valuePropertyName;\r\n @bindable groupPropertyName;\r\n @bindable disabledPropertyName;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedItems;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedItem;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedValues;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedValue;\r\n @bindable minimumResultsForSearch;\r\n @bindable filter;\r\n @bindable noResultsMessage;\r\n @child('selector-item-template') itemTemplate;\r\n\r\n $select: any;\r\n groupedItems: any[];\r\n isDetached: boolean;\r\n selectElement: any;\r\n\r\n selectedItemsBound: boolean;\r\n selectedItemBound: boolean;\r\n selectedValuesBound: boolean;\r\n selectedValueBound: boolean;\r\n\r\n constructor(\r\n private element: Element,\r\n private container: Container,\r\n private viewCompiler: ViewCompiler\r\n ) {\r\n this.closeDropdownOnEnterKey = this.closeDropdownOnEnterKey.bind(this);\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/no-identical-functions\r\n disabledChanged() {\r\n if (!this.$select)\r\n return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n created(owningView, myView) {\r\n var controller = owningView.controllers.find(c => c.view === myView);\r\n var boundProperty = controller.boundProperties.find(bp => bp.binding.targetProperty.startsWith('selected')).binding.targetProperty;\r\n this[boundProperty + 'Bound'] = true;\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/no-identical-functions\r\n placeholderChanged() {\r\n if (!this.$select)\r\n return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n reinitialize() {\r\n this.destroy();\r\n this.initialize();\r\n }\r\n\r\n itemsChanged() {\r\n if (this.groupPropertyName && this.items) {\r\n this.groupedItems = this.items.reduce((groupedItems, item) => {\r\n let group = item[this.groupPropertyName];\r\n groupedItems.has(group) ?\r\n groupedItems.get(group).push(item) :\r\n groupedItems.set(group, [item]);\r\n\r\n return groupedItems;\r\n }, new Map());\r\n }\r\n\r\n if (!this.$select)\r\n return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/no-identical-functions\r\n itemTemplateChanged() {\r\n if (!this.$select)\r\n return;\r\n\r\n this.reinitialize();\r\n }\r\n\r\n selectedItemsChanged() {\r\n this.updateSelection();\r\n }\r\n\r\n selectedItemChanged() {\r\n this.updateSelection();\r\n }\r\n\r\n selectedValuesChanged() {\r\n this.updateSelection();\r\n }\r\n\r\n selectedValueChanged() {\r\n this.updateSelection();\r\n }\r\n\r\n closeDropdownOnEnterKey(e) {\r\n if (e.keyCode === 13)\r\n this.$select && this.$select.select2('close');\r\n }\r\n\r\n attached() {\r\n $('body').on('keyup', 'input.select2-search__field', this.closeDropdownOnEnterKey);\r\n\r\n this.$select = $(this.element.getElementsByTagName('select')[0]);\r\n this.initialize();\r\n }\r\n\r\n dispatchChangeEvent() {\r\n this.element.dispatchEvent(new CustomEvent('select2change', {\r\n bubbles: true,\r\n detail: {\r\n selectedItems: this.selectedItems,\r\n selectedItem: this.selectedItem,\r\n selectedValues: this.selectedValues,\r\n selectedValue: this.selectedValue\r\n }\r\n }));\r\n }\r\n\r\n detached() {\r\n $('body').off('keyup', 'input.select2-search__field', this.closeDropdownOnEnterKey);\r\n\r\n this.destroy();\r\n this.isDetached = true;\r\n }\r\n\r\n createTag(params) {\r\n if (!params.term || !this.items)\r\n return;\r\n\r\n var tag = {\r\n id: params.term,\r\n text: params.term,\r\n tag: true\r\n };\r\n\r\n tag[this.valuePropertyName || 'value'] = params.term;\r\n tag[this.titlePropertyName || 'title'] = params.term;\r\n\r\n return tag;\r\n }\r\n\r\n insertTag(data, tag) {\r\n this.element.dispatchEvent(new CustomEvent('tagcreated', {\r\n bubbles: true,\r\n detail: { tag }\r\n }));\r\n }\r\n\r\n findItemByValue(items, value) {\r\n // coercion used here intentionally to support int/string/etc \r\n return items.find(item => {\r\n var itemValue = item[this.valuePropertyName || 'value'];\r\n // Handle boolean string values differently since coersion doesn't work below.\r\n if (typeof itemValue === 'boolean') {\r\n let booleanValue = value === 'true';\r\n return itemValue === booleanValue;\r\n }\r\n\r\n return itemValue == value;\r\n });\r\n }\r\n\r\n getSelect2Item(item) {\r\n return {\r\n id: item[this.valuePropertyName || 'value'],\r\n text: item[this.titlePropertyName || 'title'],\r\n title: item.tooltip ?? item[this.titlePropertyName || 'title'],\r\n disabled: item[this.disabledPropertyName || 'disabled'] ?? false\r\n };\r\n }\r\n\r\n getSelect2Data() {\r\n if (this.groupedItems) {\r\n return Array.from(this.groupedItems).map(g => ({\r\n text: g[0],\r\n children: g[1].map(i => this.getSelect2Item(i))\r\n }));\r\n }\r\n\r\n if (this.items)\r\n return this.items.map(i => this.getSelect2Item(i));\r\n\r\n return [];\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n initialize() {\r\n this.$select\r\n .select2({\r\n data: this.getSelect2Data(),\r\n placeholder: this.placeholder || (this.multiple ? 'Select items' : 'Select item'),\r\n minimumResultsForSearch: this.enableCustomItems ? 0 : (this.minimumResultsForSearch || this.minimumResultsForSearch === 0) ? this.minimumResultsForSearch : Infinity,\r\n allowClear: !!this.allowClear,\r\n dropdownAutoWidth: true,\r\n tokenSeparators: [',', '.'],\r\n templateResult:\r\n state => {\r\n if (this.itemTemplate) {\r\n let viewFactory = this.viewCompiler.compile(this.itemTemplate.template);\r\n let view = viewFactory.create(this.container);\r\n let rootElement = document.createElement('div');\r\n rootElement.setAttribute('style', 'display: inline-block; width: 100%');\r\n\r\n view.bind({ item: 'id' in state ? this.findItemByValue(this.items, state.id) : null }, this.itemTemplate.parentBindingContext);\r\n view.appendNodesTo(rootElement);\r\n view.attached();\r\n\r\n return rootElement;\r\n }\r\n\r\n var c = document.createElement('div');\r\n c.textContent = state.text;\r\n\r\n return c;\r\n },\r\n disabled: !!this.disabled,\r\n tags: !!this.enableCustomItems,\r\n createTag: !!this.enableCustomItems && this.createTag.bind(this),\r\n insertTag: !!this.enableCustomItems && this.insertTag.bind(this),\r\n language: !this.enableCustomItems ? null : {\r\n noResults: () => {\r\n return this.noResultsMessage || 'Press Enter to add this custom text';\r\n }\r\n },\r\n ...this.filter && {\r\n matcher: (params, data) => {\r\n if (!params.term)\r\n return data;\r\n\r\n let matched = 'id' in data && this.filter(params.term, this.findItemByValue(this.items, data.id));\r\n if (matched)\r\n return data;\r\n\r\n return null;\r\n }\r\n }\r\n })\r\n .on('select2:select', e => {\r\n var item = this.findItemByValue(this.items, e.params.data.id);\r\n if (!item)\r\n return;\r\n\r\n var selectedItems = this.multiple ? [...this.getSelectedItems(), item] : [item];\r\n\r\n this.setSelection(selectedItems);\r\n this.dispatchChangeEvent();\r\n })\r\n .on('select2:unselect', e => {\r\n var selectedItems = [...this.getSelectedItems()];\r\n var item = this.findItemByValue(selectedItems, e.params.data.id);\r\n var itemToRemoveIndex = selectedItems.indexOf(item);\r\n if (itemToRemoveIndex === -1)\r\n return;\r\n\r\n selectedItems.splice(itemToRemoveIndex, 1);\r\n\r\n this.setSelection(selectedItems);\r\n this.dispatchChangeEvent();\r\n })\r\n .on('select2:opening', e => {\r\n this.$select.data('select2').$dropdown[0].style.display = 'none';\r\n })\r\n .on('select2:open', e => {\r\n this.$select.data('select2').$dropdown[0].style.display = '';\r\n });\r\n\r\n var select2Plugin = this.$select.data('select2');\r\n if (select2Plugin && select2Plugin.dataAdapter) {\r\n select2Plugin.dataAdapter.current = function (callback) {\r\n let data = [];\r\n let pendingElements: any[] = Array.from(this.$element[0].children);\r\n\r\n while (pendingElements.length) {\r\n let element = pendingElements.shift();\r\n pendingElements.unshift(...Array.from(element.children));\r\n\r\n if (element.selected)\r\n data.push(select2Plugin.dataAdapter.item($(element)));\r\n }\r\n\r\n callback(data);\r\n };\r\n }\r\n\r\n this.updateSelection();\r\n }\r\n\r\n setSelection(selectedItems) {\r\n if (this.selectedItemsBound)\r\n this.selectedItems = selectedItems;\r\n\r\n else if (this.selectedItemBound)\r\n this.selectedItem = selectedItems.length ? selectedItems[0] : null;\r\n\r\n else if (this.selectedValuesBound)\r\n this.selectedValues = selectedItems.length ? selectedItems.map(i => i[this.valuePropertyName || 'value']) : [];\r\n\r\n else if (this.selectedValueBound)\r\n this.selectedValue = selectedItems.length ? selectedItems.map(i => i[this.valuePropertyName || 'value'])[0] : null;\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n updateSelection() {\r\n if (!this.$select)\r\n return;\r\n\r\n var values = this.getSelectedValues();\r\n\r\n var finalValue = values.length ?\r\n this.multiple ?\r\n values.map(e => typeof e === 'boolean' ? e ? 'true' : 'false' : e) :\r\n (values.map(e => typeof e === 'boolean' ? e ? 'true' : 'false' : e)[0] ?? null) :\r\n null;\r\n\r\n this.$select.val(finalValue).trigger('change');\r\n }\r\n\r\n getSelectedValues() {\r\n if (this.selectedItemsBound)\r\n return (this.selectedItems || []).map(i => i[this.valuePropertyName || 'value']);\r\n\r\n else if (this.selectedItemBound)\r\n return this.selectedItem ? [this.selectedItem[this.valuePropertyName || 'value']] : [];\r\n\r\n else if (this.selectedValuesBound)\r\n return this.selectedValues ?? [];\r\n\r\n else if (this.selectedValueBound)\r\n return [this.selectedValue ?? null];\r\n\r\n return [];\r\n }\r\n\r\n getSelectedItems() {\r\n var selectedValues = this.getSelectedValues();\r\n\r\n return (this.items || [])\r\n .filter(i => selectedValues.some(v => v === i[this.valuePropertyName || 'value']));\r\n }\r\n\r\n destroy() {\r\n if (this.isDetached)\r\n return;\r\n\r\n this.$select\r\n .select2('destroy')\r\n .off('select2:select')\r\n .off('select2:unselect')\r\n .off('select2:opening')\r\n .off('select2:open');\r\n\r\n this.selectElement.textContent = '';\r\n }\r\n}\r\n","import { TargetInstruction, noView, processContent, autoinject } from 'aurelia-framework';\r\n\r\nfunction parseElement(compiler, resources, element, instruction) {\r\n var html = element.innerHTML;\r\n if (html !== '')\r\n instruction.template = html;\r\n\r\n element.innerHTML = '';\r\n}\r\n\r\n@autoinject\r\n@noView\r\n@processContent(parseElement)\r\nexport class SelectorItemTemplate {\r\n template: string;\r\n parentBindingContext: any;\r\n\r\n constructor(targetInstruction: TargetInstruction) {\r\n this.template = '';\r\n }\r\n\r\n bind(bindingContext, overrideContext) {\r\n this.parentBindingContext = overrideContext.bindingContext ?? overrideContext;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable, bindingMode } from 'aurelia-framework';\r\nimport $ from 'jquery';\r\n\r\n@inject(Element)\r\nexport class Slider {\r\n @bindable start;\r\n @bindable end;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value;\r\n\r\n constructor(element) {\r\n this.element = element;\r\n this.handleSliderChange = this.handleSliderChange.bind(this);\r\n }\r\n\r\n attached() {\r\n this.$slider = $(this.element.querySelector('div.slider'));\r\n this.$slider.foundation();\r\n this.$slider.on('changed.zf.slider', this.handleSliderChange);\r\n this.sliderPlugin = this.$slider.data('zfPlugin');\r\n }\r\n\r\n detached() {\r\n if (this.$slider) {\r\n this.$slider.off('changed.zf.slider', this.handleSliderChange);\r\n this.$slider.data('zfPlugin')?.destroy();\r\n }\r\n }\r\n\r\n startChanged() {\r\n if (this.valueInput)\r\n this.valueInput.min = this.start;\r\n\r\n if (this.sliderPlugin)\r\n this.sliderPlugin.options.start = this.start;\r\n }\r\n\r\n endChanged() {\r\n if (this.valueInput)\r\n this.valueInput.max = this.end;\r\n\r\n if (this.sliderPlugin)\r\n this.sliderPlugin.options.end = this.end;\r\n }\r\n\r\n valueChanged() {\r\n if (this.valueInput)\r\n this.valueInput.value = this.value;\r\n \r\n if (this.sliderPlugin)\r\n this.sliderPlugin.setHandles();\r\n }\r\n\r\n handleSliderChange() {\r\n if (!this.valueInput)\r\n return;\r\n\r\n let newValue = parseInt(this.valueInput.value);\r\n if (this.value !== newValue)\r\n this.value = newValue;\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { bindable, bindingMode } from 'aurelia-framework';\r\n\r\nexport function getTimeOptions() {\r\n var times = [];\r\n\r\n const quarterHours = ['00', '15', '30', '45'];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n for (let j = 0; j < 4; j++) {\r\n let time = `${i}:${quarterHours[j]}`;\r\n if (i < 10)\r\n time = `0${time}`;\r\n\r\n let title;\r\n if (i === 0) {\r\n title = `12:${quarterHours[j]} AM`;\r\n }\r\n else if (i >= 12) {\r\n let twelveHrClockOffset = i;\r\n if (i > 12)\r\n twelveHrClockOffset = i - 12;\r\n title = `${twelveHrClockOffset}:${quarterHours[j]} PM`;\r\n } else {\r\n title = `${time} AM`;\r\n }\r\n times.push({ title, value: time });\r\n }\r\n }\r\n\r\n return times;\r\n};\r\n\r\nexport class TimeSelector {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) selectedTime;\r\n @bindable disabled;\r\n\r\n constructor() {\r\n this.times = getTimeOptions();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","export class ArrayPropertyMapValueConverter {\r\n toView(value, propertyName) {\r\n if (!value || !propertyName)\r\n return null;\r\n\r\n return value.map(item => item[propertyName]);\r\n }\r\n}\r\n","export class BooleanValueConverter {\r\n toView(value, format = 'yesNo') {\r\n switch (format) {\r\n case 'yesNo':\r\n default:\r\n return value ? 'Yes' : 'No';\r\n }\r\n }\r\n}","export class CapPlanTestMethodFormatValueConverter {\r\n toView(value) {\r\n return value.map(cptm => `${cptm.testMethodBillCode} - ${cptm.testMethodName}`).join(', ');\r\n }\r\n}","export class CommaSeparateValueConverter {\r\n toView(value) {\r\n if (!value)\r\n return '';\r\n\r\n return value.join(', ');\r\n }\r\n}\r\n","import numeral from 'numeral';\r\n\r\nexport class CurrencyValueConverter {\r\n toView(value) {\r\n return numeral(value).format('($0,0.00)');\r\n }\r\n}\r\n","import DateUtility from '../date-utility';\r\n\r\nexport class DateFormatValueConverter {\r\n toView(value, format, defaultValue, convertToLocal = true) {\r\n return DateUtility.toView(value, format, defaultValue, convertToLocal);\r\n }\r\n\r\n fromView(value) {\r\n if (value)\r\n return new Date(value);\r\n\r\n return null;\r\n }\r\n}\r\n","export class KeysValueConverter {\r\n toView(value) {\r\n if (typeof value !== 'undefined')\r\n return Object.keys(value);\r\n return null;\r\n }\r\n}\r\n","function isNullOrWhitespace(input) {\r\n if (typeof input === 'undefined' || input == null)\r\n return true;\r\n\r\n return String(input).replace(/\\s/g, '').length < 1;\r\n}\r\n\r\nexport class FilterValueConverter {\r\n toView(array, field, search, match = true) {\r\n if (isNullOrWhitespace(search) || isNullOrWhitespace(field))\r\n return array;\r\n\r\n var result = [];\r\n\r\n if (match)\r\n result = array.filter(p => String(p[field]).toLowerCase().indexOf(String(search).toLowerCase()) !== -1);\r\n else\r\n result = array.filter(p => !String(p[field]).toLowerCase().indexOf(String(search).toLowerCase()) !== -1);\r\n\r\n return result;\r\n }\r\n}\r\n","export class GroupByValueConverter {\r\n toView(objects, key) {\r\n if (typeof objects === 'undefined' || objects == null) return objects;\r\n return objects.reduce(\r\n (rv, x) => rv.set(x[key], (rv.get(x[key]) || []).concat(x)),\r\n new Map()\r\n );\r\n }\r\n}\r\n","import { PLATFORM } from \"aurelia-framework\";\r\n\r\nexport function configure(aurelia) {\r\n aurelia.globalResources(\r\n PLATFORM.moduleName('./array-property-map-value-converter'),\r\n PLATFORM.moduleName('./percent-value-converter'),\r\n PLATFORM.moduleName('./boolean-value-converter'),\r\n PLATFORM.moduleName('./comma-separate-value-converter'),\r\n PLATFORM.moduleName('./number-value-converter'),\r\n PLATFORM.moduleName('./number-format-value-converter'),\r\n PLATFORM.moduleName('./date-format-value-converter'),\r\n PLATFORM.moduleName('./dictionary-value-converter'),\r\n PLATFORM.moduleName('./group-by-value-converter'),\r\n PLATFORM.moduleName('./filter-value-converter'),\r\n PLATFORM.moduleName('./sort-value-converter'),\r\n PLATFORM.moduleName('./take-value-converter'),\r\n PLATFORM.moduleName('./json-value-converter'),\r\n PLATFORM.moduleName('./currency-value-converter'),\r\n PLATFORM.moduleName('./object-keys-value-converter'),\r\n PLATFORM.moduleName('./lookup-and-map-value-converter'),\r\n PLATFORM.moduleName('./test-method-format-value-converter'),\r\n PLATFORM.moduleName('./cap-plan-test-method-format-value-converter'),\r\n );\r\n}\r\n","export class JsonValueConverter {\r\n toView(value) {\r\n return JSON.stringify(value, null, \"\\t\");\r\n }\r\n}\r\n","export class LookupAndMapValueConverter {\r\n toView(key, items, keyPropertyName, valuePropertyName) {\r\n if (!items || !Array.isArray(items))\r\n return null;\r\n\r\n return items.find(i => i[keyPropertyName] === key)?.[valuePropertyName] ?? null;\r\n }\r\n}\r\n","function numberWithCommas(x) {\r\n var parts = x.toString().split(\".\");\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return parts.join(\".\");\r\n}\r\n\r\nexport class NumberFormatValueConverter {\r\n toView(value) {\r\n if (!value)\r\n return value;\r\n\r\n return numberWithCommas(value);\r\n }\r\n}","export class NumberValueConverter {\r\n fromView(value) {\r\n if (value === '' || value === null || value === undefined)\r\n return null;\r\n\r\n if (Number.isNaN(value))\r\n return null;\r\n\r\n if (typeof value === 'number')\r\n return value;\r\n\r\n if (typeof value === 'string') {\r\n var numberValue = Number(value.trim());\r\n if (Number.isNaN(numberValue))\r\n return null;\r\n\r\n return numberValue;\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","export class ObjectKeysValueConverter {\r\n toView(obj: any) {\r\n if (!obj)\r\n return [];\r\n \r\n return Object.keys(obj);\r\n }\r\n}\r\n","export class PercentValueConverter {\r\n toView(value, decimalPlaces) {\r\n return ((value || 0) * 100).toFixed((decimalPlaces || 0)) + '%';\r\n }\r\n}","export class SortValueConverter {\r\n toView(array, propertyName, direction) {\r\n if (typeof array === 'undefined' || array === null) return array;\r\n if (!Array.isArray(array)) return array;\r\n if (array.length === 0) return array;\r\n\r\n var result = array.slice(0)\r\n .sort((a, b) => {\r\n if (direction.toLowerCase() === 'asc')\r\n return (a[propertyName].toLowerCase() > b[propertyName].toLowerCase());\r\n return (b[propertyName].toLowerCase() > a[propertyName].toLowerCase());\r\n });\r\n return result;\r\n }\r\n}\r\n","export class TakeValueConverter {\r\n toView(array, count) {\r\n return array.slice(0, count);\r\n }\r\n}\r\n","export class TestMethodFormatValueConverter {\r\n toView(value) {\r\n return value.map(tm => `${tm.billCode} - ${tm.name}`).join(', ');\r\n }\r\n}\r\n","import { CsvExportParams, ExcelExportParams, GridOptions } from 'ag-grid-community';\r\nimport { Grid } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\nexport interface AgGridDialogModel {\r\n title: string;\r\n gridOptions: GridOptions;\r\n csvExportParams?: CsvExportParams;\r\n excelExportParams?: ExcelExportParams;\r\n fileNameSuffix?: string;\r\n}\r\n\r\n@autoinject\r\nexport class AgGridDialog {\r\n controller: DialogController;\r\n agGridDialogRef: any;\r\n title: string;\r\n gridOptions: GridOptions;\r\n defaulCsvExportParams: CsvExportParams;\r\n defaultExcelExportParams: ExcelExportParams;\r\n\r\n constructor(controller: DialogController) {\r\n this.controller = controller;\r\n this.defaulCsvExportParams = {\r\n skipColumnGroupHeaders: true,\r\n skipRowGroups: true,\r\n allColumns: true,\r\n };\r\n this.defaultExcelExportParams = {\r\n skipColumnGroupHeaders: true,\r\n skipRowGroups: true,\r\n allColumns: true,\r\n };\r\n }\r\n\r\n private createFileName(ext: string, fileNameSuffix?: string): string {\r\n return (\r\n this.title.replace(/\\s-\\s/g, '_').replace(/\\s/g, '').replace(/:/g, '-') +\r\n `-${!fileNameSuffix ? 'export' : fileNameSuffix}.${ext}`\r\n );\r\n }\r\n\r\n canActivate(params: AgGridDialogModel) {\r\n this.title = params.title;\r\n this.gridOptions = params.gridOptions;\r\n this.defaulCsvExportParams.fileName = this.createFileName('csv', params.fileNameSuffix);\r\n this.defaultExcelExportParams.fileName = this.createFileName('xlsx', params.fileNameSuffix);\r\n\r\n const csvExportParams = { ...this.defaulCsvExportParams, ...params.csvExportParams };\r\n const excelExportParams = { ...this.defaultExcelExportParams, ...params.excelExportParams };\r\n this.gridOptions.defaultCsvExportParams = csvExportParams;\r\n this.gridOptions.defaultExcelExportParams = excelExportParams;\r\n\r\n return true;\r\n }\r\n\r\n attached() {\r\n new Grid(this.agGridDialogRef, this.gridOptions);\r\n }\r\n\r\n canDeactivate() {\r\n this.gridOptions?.api?.destroy();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import {inject} from 'aurelia-framework';\r\nimport {DialogController} from 'aurelia-dialog';\r\n\r\n@inject(DialogController)\r\nexport default class Alert {\r\n constructor(controller) {\r\n this.controller = controller;\r\n }\r\n\r\n activate(model) {\r\n this.isMessageHtml = model.message?.trim()?.startsWith('<');\r\n this.model = model;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import {inject} from 'aurelia-framework';\r\nimport {DialogController} from 'aurelia-dialog';\r\n\r\n@inject(DialogController)\r\nexport default class Confirmation {\r\n constructor(controller) {\r\n this.controller = controller;\r\n this.answer = null;\r\n }\r\n\r\n activate(model) {\r\n this.model = model;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { DialogController } from 'aurelia-dialog';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport SelectorOption from '../selector-option';\r\n\r\nexport interface ColumnOrder {\r\n id: string;\r\n direction: string;\r\n}\r\n\r\ninterface DataGridReorderDialogModel {\r\n title: string;\r\n columnOptions: SelectorOption[];\r\n}\r\n\r\n@autoinject\r\nexport class DataGridReorderDialog {\r\n title: string;\r\n columnOrders: ColumnOrder[] = [];\r\n columnOptions: SelectorOption[] = [];\r\n directionOptions: SelectorOption[] = [\r\n { title: 'Ascending', value: 'asc' },\r\n { title: 'Descending', value: 'desc' },\r\n ];\r\n\r\n constructor(private controller: DialogController) { }\r\n\r\n addColumnOrder() {\r\n this.columnOrders.push({\r\n id: this.columnOptions[0].value as string,\r\n direction: this.directionOptions[0].value as string\r\n });\r\n }\r\n\r\n removeLastColumnOrder() {\r\n this.columnOrders.pop();\r\n }\r\n\r\n activate(model: DataGridReorderDialogModel) {\r\n this.title = model.title ?? 'Reorder Grid'\r\n this.columnOptions = model.columnOptions;\r\n this.addColumnOrder();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\n\r\ninterface ExportableFieldSelectorModel {\r\n title: string;\r\n fields: string[];\r\n selected: string[];\r\n}\r\n\r\ninterface ExportableField {\r\n value: string;\r\n label: string;\r\n}\r\n\r\n@autoinject\r\nexport default class ExportableFieldSelector {\r\n model: ExportableFieldSelectorModel;\r\n isLoading: boolean;\r\n \r\n exportableFields: ExportableField[];\r\n selectedFields: string[];\r\n\r\n constructor(\r\n private controller: DialogController\r\n ) {\r\n\r\n this.isLoading = true;\r\n }\r\n\r\n async activate(model: ExportableFieldSelectorModel) {\r\n this.selectedFields = [];\r\n this.model = model;\r\n\r\n let exportableFieldKeys = Object.keys(this.model.fields);\r\n\r\n this.exportableFields = [];\r\n exportableFieldKeys.forEach(k => {\r\n let field = { \r\n value: k,\r\n label: this.model.fields[k]\r\n } as ExportableField;\r\n\r\n this.exportableFields.push(field);\r\n\r\n if ((!this.model.selected) || (this.model.selected && this.model.selected.findIndex(f => f === k) !== -1))\r\n this.selectedFields.push(k);\r\n });\r\n\r\n this.isLoading = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable, observable } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport Logger from 'infrastructure/logger';\r\nimport LabelTemplateService from 'label-templates/label-template-service';\r\n\r\n@inject(DialogController, Element, Logger, LabelTemplateService)\r\nexport default class LabelSelector {\r\n @bindable selectedLabelTemplate;\r\n @observable searchText;\r\n\r\n constructor(controller, element, logger, labelTemplateService) {\r\n this.controller = controller;\r\n this.element = element;\r\n this.logger = logger;\r\n\r\n this.labelTemplateService = labelTemplateService;\r\n\r\n this.isLoading = true;\r\n this.labelTemplates = [];\r\n }\r\n\r\n async updateSearchResults() {\r\n this.selectedLabelTemplate = null;\r\n this.isLoading = true;\r\n\r\n try {\r\n if (!this.model.labelTemplateType)\r\n throw new Error('Cannot seach for label templates because label template type was not specified.');\r\n\r\n if (!this.model.organizationId)\r\n throw new Error('Cannot seach for label templates because an organization ID was not specified.');\r\n\r\n var labelTemplates = await this.labelTemplateService.getLabelTemplates({\r\n type: this.model.labelTemplateType,\r\n organizationIds: [this.model.organizationId],\r\n recordStatus: 'Active'\r\n }, 'Selector');\r\n\r\n let filteredLabelTemplates = labelTemplates.filter(lt => lt.organizationId === this.model.organizationId);\r\n filteredLabelTemplates.forEach(lt => {\r\n lt.displayName = `${lt.templateName} (${(lt.width/72).toFixed(2)} x ${(lt.height/72).toFixed(2)} in.)`;\r\n });\r\n\r\n this.labelTemplates = filteredLabelTemplates;\r\n } catch (error) {\r\n this.logger.error('Error searching for label templates.', error, { searchText: this.searchText });\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n\r\n async activate(model) {\r\n this.model = model;\r\n await this.updateSearchResults();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import {inject, bindable} from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\n\r\n@inject(DialogController)\r\nexport default class NameValueItemSelector {\r\n @bindable selectedItem;\r\n\r\n constructor(controller) {\r\n this.controller = controller;\r\n }\r\n\r\n async selectedItemChanged() {\r\n }\r\n\r\n activate(model) {\r\n this.model = model;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable, observable, Container } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport DialogPresenter from './dialog-presenter';\r\nimport UserService from '../../users/user-service';\r\nimport Logger from 'infrastructure/logger';\r\n\r\n@inject(DialogController, Container, Element, Logger, UserService)\r\nexport default class UserSelector {\r\n @bindable user;\r\n @observable searchText;\r\n\r\n constructor(controller, container, element, logger, userService) {\r\n this.controller = controller;\r\n this.element = element;\r\n this.container = container;\r\n this.logger = logger;\r\n this.userService = userService;\r\n this.searchText = '';\r\n this.isLoading = true;\r\n this.matchingUsers = [];\r\n }\r\n\r\n searchTextChanged() {\r\n this.updateSearchResults();\r\n }\r\n\r\n async updateSearchResults() {\r\n if (this.searchText.trim() === '')\r\n return;\r\n\r\n this.user = null;\r\n\r\n try {\r\n this.isLoading = true;\r\n var matchingUsers = await this.userService.getUsers(this.searchText);\r\n\r\n for (let user of matchingUsers)\r\n user.title = `${user.firstName} ${user.lastName}`;\r\n\r\n this.matchingUsers = matchingUsers;\r\n this.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error searching for users.', error, { searchText: this.searchText });\r\n this.container.get(DialogPresenter).showAlert('Unexpected Error', 'An unexpected error occurred while searching for users. Please try again later.');\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n activate(model) {\r\n this.model = model;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { inject } from \"aurelia-framework\";\r\nimport DialogPresenter from '../dialogs/dialog-presenter';\r\n\r\n@inject(Element, DialogPresenter, EventAggregator)\r\nexport class ClientRefresh {\r\n\r\n constructor(element, dialogPresenter, eventAggregator) {\r\n this.element = element;\r\n this.dialogPresenter = dialogPresenter;\r\n this.eventAggregator = eventAggregator;\r\n this.clientIsCurrent = true;\r\n }\r\n\r\n handleClientIsCurrent() {\r\n this.clientIsCurrent = true;\r\n }\r\n\r\n handleClientRefresh(version) {\r\n const { clientVersion } = version;\r\n this.newClientVersion = clientVersion;\r\n this.clientIsCurrent = false;\r\n }\r\n\r\n async showClientVersionReloadDialog() {\r\n if (await this.dialogPresenter.showClientVersionReloadDialog())\r\n window.location.reload();\r\n }\r\n\r\n attached() {\r\n this.clientIsCurrentSubscription = this.eventAggregator.subscribe('client.isCurrent', () => this.handleClientIsCurrent());\r\n this.refreshClientSubscription = this.eventAggregator.subscribe('client.refresh', (version) => this.handleClientRefresh(version));\r\n }\r\n\r\n detached() {\r\n this.clientIsCurrentSubscription && this.clientIsCurrentSubscription.dispose();\r\n this.refreshClientSubscription && this.refreshClientSubscription.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { GetContextMenuItemsParams, GridOptions, MenuItemDef } from 'ag-grid-community';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { GlobalMessageNotification } from 'global-messaging/global-message-notification';\r\nimport { GlobalMessageSearchType } from 'global-messaging/global-message-search-type';\r\nimport { addCellRendererParamsToColId } from 'infrastructure/ag-grid/ag-cell-helpers';\r\nimport { AgGridDialogModel } from 'infrastructure/dialogs/ag-grid-dialog';\r\nimport { GlobalMessagingService } from '../../../global-messaging/global-messaging-service';\r\nimport SecurityService from '../../../security/security-service';\r\nimport DialogPresenter from '../../dialogs/dialog-presenter';\r\nimport Logger from '../../logger';\r\nimport { globalMessageNotificationGridOptions } from './global-message-notification-grid';\r\n\r\n@autoinject\r\nexport class GlobalMessageNotifier {\r\n private agGridOptions: GridOptions;\r\n private agGridDialogModel: AgGridDialogModel;\r\n\r\n private _globalMessageCount: number;\r\n private userMessageCountChangedSubscription: Subscription;\r\n\r\n constructor(\r\n private globalMessagingService: GlobalMessagingService,\r\n private dialogPresenter: DialogPresenter,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private securityService: SecurityService,\r\n ) {\r\n logger.name = 'global-message-notifier';\r\n\r\n // the event subscription is not attached in time to receive init events\r\n this._globalMessageCount = this.securityService.getUserMessageCount();\r\n }\r\n\r\n get globalMessageCount() {\r\n return this._globalMessageCount;\r\n }\r\n\r\n set globalMessageCount(count: number) {\r\n this._globalMessageCount = count;\r\n }\r\n\r\n handleUserMessageCountChanged(e: any) {\r\n const { count } = e;\r\n this.globalMessageCount = count;\r\n }\r\n\r\n async getMessageNotifications(\r\n searchType: GlobalMessageSearchType = GlobalMessageSearchType.Default,\r\n ) {\r\n let data: GlobalMessageNotification[];\r\n try {\r\n data = await this.globalMessagingService.getUserGlobalMessageNotifications(searchType);\r\n } catch (e) {\r\n this.logger.error('Error getting user messages', e);\r\n this.agGridDialogModel.gridOptions.api?.setRowData([]);\r\n this.dialogPresenter.showAlert('Something went wrong', 'Bad!');\r\n }\r\n\r\n return data;\r\n }\r\n\r\n async viewBy(searchType: GlobalMessageSearchType = GlobalMessageSearchType.Default) {\r\n const data = await this.getMessageNotifications(searchType);\r\n this.agGridDialogModel?.gridOptions?.api?.setRowData(data);\r\n this.agGridDialogModel.title = 'FSNet Portal Messages - ' + searchType;\r\n }\r\n\r\n async showMessages() {\r\n this.agGridDialogModel = {\r\n title: 'FSNet Portal Messages',\r\n gridOptions: this.agGridOptions,\r\n };\r\n const data = await this.getMessageNotifications();\r\n this.agGridDialogModel.gridOptions.rowData = data || [];\r\n await this.dialogPresenter.showAgGridDialog(this.agGridDialogModel);\r\n }\r\n\r\n async readMessage(globalMessageId: number) {\r\n const rowNode = this.agGridOptions.api?.getRowNode(globalMessageId.toString());\r\n rowNode.setDataValue('isRead', true);\r\n\r\n try {\r\n await this.globalMessagingService.readUserMessage(globalMessageId);\r\n this._globalMessageCount--;\r\n this.securityService.setUserMessageCount(this._globalMessageCount);\r\n } catch (error) {\r\n this.logger.error('Error marking user messages as read', error);\r\n }\r\n }\r\n\r\n async unReadMessage(globalMessageId: number) {\r\n const rowNode = this.agGridOptions.api?.getRowNode(globalMessageId.toString());\r\n rowNode.setDataValue('isRead', false);\r\n\r\n try {\r\n await this.globalMessagingService.unReadUserMessage(globalMessageId);\r\n this._globalMessageCount++;\r\n this.securityService.setUserMessageCount(this._globalMessageCount);\r\n } catch (error) {\r\n this.logger.error('Error marking user messages as unread', error);\r\n }\r\n }\r\n\r\n // TODO: check for read/unread when deleting/undeleting messages\r\n async deleteMessage(globalMessageId: number) {\r\n const rowNode = this.agGridOptions.api?.getRowNode(globalMessageId.toString());\r\n rowNode.setDataValue('isDeleted', true);\r\n\r\n try {\r\n await this.globalMessagingService.deleteUserMessage(globalMessageId);\r\n this._globalMessageCount--;\r\n this.securityService.setUserMessageCount(this._globalMessageCount);\r\n } catch (error) {\r\n this.logger.error('Error marking user messages as deleted', error);\r\n }\r\n }\r\n\r\n async unDeleteMessage(globalMessageId: number) {\r\n const rowNode = this.agGridOptions.api?.getRowNode(globalMessageId.toString());\r\n rowNode.setDataValue('isDeleted', false);\r\n\r\n try {\r\n await this.globalMessagingService.unDeleteUserMessage(globalMessageId);\r\n this._globalMessageCount++;\r\n this.securityService.setUserMessageCount(this._globalMessageCount);\r\n } catch (error) {\r\n this.logger.error('Error marking user messages as undeleted', error);\r\n }\r\n }\r\n\r\n getContextMenuItems = (params: GetContextMenuItemsParams): (string | MenuItemDef)[] => {\r\n return [\r\n {\r\n name: 'View By',\r\n subMenu: [\r\n {\r\n name: 'Default',\r\n action: () => this.viewBy(GlobalMessageSearchType.Default),\r\n },\r\n {\r\n name: 'Read',\r\n action: () => this.viewBy(GlobalMessageSearchType.Read),\r\n },\r\n {\r\n name: 'Deleted',\r\n action: () => this.viewBy(GlobalMessageSearchType.Deleted),\r\n },\r\n {\r\n name: 'All',\r\n action: () => this.viewBy(GlobalMessageSearchType.All),\r\n },\r\n ],\r\n },\r\n ] as MenuItemDef[];\r\n };\r\n\r\n attached() {\r\n const messageActionCellRendererParams = {\r\n readMessage: this.readMessage.bind(this),\r\n unReadMessage: this.unReadMessage.bind(this),\r\n deleteMessage: this.deleteMessage.bind(this),\r\n unDeleteMessage: this.unDeleteMessage.bind(this),\r\n };\r\n addCellRendererParamsToColId(\r\n globalMessageNotificationGridOptions.columnDefs,\r\n 'messageActionCol',\r\n messageActionCellRendererParams,\r\n );\r\n this.agGridOptions = globalMessageNotificationGridOptions;\r\n this.agGridOptions.getContextMenuItems = this.getContextMenuItems.bind(this);\r\n\r\n this.userMessageCountChangedSubscription = this.eventAggregator.subscribe(\r\n 'user.messageCountChanged',\r\n (e: any) => this.handleUserMessageCountChanged(e),\r\n );\r\n }\r\n\r\n detached() {\r\n this.userMessageCountChangedSubscription?.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport OrganizationService from '../../organizations/organization-service';\r\nimport SecurityService from '../../security/security-service';\r\nimport UserService from '../../users/user-service';\r\nimport DialogPresenter from '../dialogs/dialog-presenter';\r\nimport Logger from '../logger';\r\n\r\n@inject(Element, Router, Logger, DialogPresenter, SecurityService, UserService, OrganizationService)\r\nexport class HeaderAccountDropdown {\r\n @observable userFilterText;\r\n @observable orgFilterText;\r\n\r\n constructor(element, router, logger, dialogPresenter, securityService, userService, organizationService) {\r\n this.element = element;\r\n this.router = router;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'header-account-dropdown';\r\n\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.userService = userService;\r\n this.organizationService = organizationService;\r\n this.userFilterText = '';\r\n this.orgFilterText = '';\r\n this.usersAreLoading = true;\r\n this.orgsAreLoading = true;\r\n this.userView = this.securityService.getCurrentSessionUser();\r\n this.usersView = [];\r\n this.orgsView = [];\r\n this.updateImpersonatedUser();\r\n this.updateWorkingUnderOrganization();\r\n }\r\n\r\n userFilterTextChanged() {\r\n this.orgsView = [];\r\n this.orgFilterText = '';\r\n this.updateUserSearchResults();\r\n }\r\n\r\n orgFilterTextChanged() {\r\n this.usersView = [];\r\n this.userFilterText = '';\r\n this.updateOrgSearchResults();\r\n }\r\n\r\n async updateUserSearchResults() {\r\n if (this.userFilterText.trim() === '')\r\n return;\r\n try {\r\n this.usersAreLoading = true;\r\n var results = await this.userService.getUsers(this.userFilterText);\r\n this.usersView = results;\r\n this.usersAreLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error searching for users to impersonate.', error, { userFilterText: this.userFilterText });\r\n this.usersAreLoading = false;\r\n }\r\n }\r\n\r\n async updateOrgSearchResults() {\r\n if (this.orgFilterText.trim() === '')\r\n return;\r\n try {\r\n this.orgsAreLoading = true;\r\n this.orgsView = await this.organizationService.findOrganizations(this.orgFilterText);\r\n this.orgsAreLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error searching for organizations to work under.', error, { orgFilterText: this.orgFilterText });\r\n this.orgsAreLoading = false;\r\n }\r\n }\r\n\r\n logout() {\r\n try {\r\n this.securityService.logout();\r\n this.securityService.navigateToLoginScreen();\r\n } catch (error) {\r\n this.logger.error('Error logging out.', error);\r\n }\r\n }\r\n\r\n updateImpersonatedUser() {\r\n this.impersonatedUser = this.securityService.getImpersonatedUser() || {};\r\n }\r\n\r\n updateWorkingUnderOrganization() {\r\n this.workingUnderOrganization = this.securityService.getWorkingUnderOrganization() || {};\r\n }\r\n\r\n async startImpersonation(user) {\r\n this.usersAreLoading = true;\r\n\r\n try {\r\n await this.securityService.startImpersonation(this.simplifyUser(user));\r\n this.updateImpersonatedUser();\r\n this.userFilterText = '';\r\n this.navigateToDashboard();\r\n } catch (error) {\r\n this.logger.error('Error starting impersonation.', error);\r\n\r\n // No organization application modules\r\n if (error.apiErrorCode === 311) {\r\n await this.dialogPresenter.showAlert(\r\n 'Impersonated User Has No Application Modules',\r\n 'The user you are attempting to impersonate doesn\\'t have any application modules and therefore cannot use this application. You cannot impersonate this user unless application modules are assigned to the user\\'s top-level organization.');\r\n } else if(error.apiErrorCode === 312) {\r\n await this.dialogPresenter.showAlert(\r\n 'Impersonated User Has No Organizations',\r\n 'The user you are attempting to impersonate is an Overseer and doesn\\'t have any organization associations. You cannot impersonate this user unless the user is associated to at least one organization.');\r\n } else {\r\n await this.dialogPresenter.showAlert(\r\n 'Error Starting Impersonation',\r\n 'An error occurred while starting impersonation. Please try again later.');\r\n }\r\n\r\n this.stopImpersonation();\r\n }\r\n\r\n this.usersAreLoading = false;\r\n }\r\n\r\n async startWorkingUnderOrganization(org) {\r\n this.orgsAreLoading = true;\r\n\r\n try {\r\n await this.securityService.startWorkingUnderOrganization(org);\r\n this.updateWorkingUnderOrganization();\r\n this.navigateToDashboard();\r\n } catch (error) {\r\n this.logger.error('Error starting work under organization.', error);\r\n this.stopImpersonation();\r\n }\r\n\r\n this.orgsAreLoading = false;\r\n }\r\n\r\n stopImpersonation() {\r\n this.usersAreLoading = true;\r\n this.orgsAreLoading = true;\r\n\r\n try {\r\n this.securityService.stopImpersonation();\r\n this.updateImpersonatedUser();\r\n this.updateWorkingUnderOrganization();\r\n this.navigateToDashboard();\r\n } catch (error) {\r\n this.logger.error('Error stopping impersonation.', error);\r\n }\r\n\r\n this.usersAreLoading = false;\r\n this.orgsAreLoading = false;\r\n }\r\n\r\n navigateToDashboard() {\r\n if (this.router.currentInstruction.config.route && this.router.currentInstruction.config.route.toLowerCase() !== 'dashboard')\r\n this.router.navigateToRoute('dashboard');\r\n else\r\n // Already on the dashboard - refresh re-run activation etc for changed permissions\r\n window.location.reload();\r\n }\r\n\r\n simplifyUser(user) {\r\n const organizationId = (user.organization && user.organization.id);\r\n const organizationName = (user.organization && user.organization.name);\r\n return {\r\n id: user.id,\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n organizationId: organizationId || 0,\r\n organizationName: organizationName || ''\r\n };\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport NavigationAuthorizer from '../../security/navigation/navigation-authorizer';\r\n\r\n@inject(Element, Router, EventAggregator, NavigationAuthorizer)\r\nexport class HeaderNavigationMenu {\r\n @bindable group;\r\n @bindable icon;\r\n @bindable className;\r\n\r\n constructor(element, router, eventAggregator, navigationAuthorizer) {\r\n this.element = element;\r\n this.router = router;\r\n this.eventAggregator = eventAggregator;\r\n this.navigationAuthorizer = navigationAuthorizer;\r\n this.handleLogin = this.handleLogin.bind(this);\r\n this.handleLogout = this.handleLogout.bind(this);\r\n this.handleImpersonationStart = this.handleImpersonationStart.bind(this);\r\n this.handleImpersonationStop = this.handleImpersonationStop.bind(this);\r\n }\r\n\r\n updateNavigationItems() {\r\n if (!this.group)\r\n return;\r\n\r\n (async () => {\r\n let navItems = [];\r\n\r\n for (let item of this.router.navigation)\r\n if (item.config.group === this.group && await this.navigationAuthorizer.hasAccess(item.config))\r\n navItems.push(item);\r\n\r\n this.navItems = navItems;\r\n })();\r\n }\r\n\r\n\r\n handleLogin() {\r\n this.updateNavigationItems();\r\n }\r\n\r\n handleLogout() {\r\n this.updateNavigationItems();\r\n }\r\n\r\n handleImpersonationStart() {\r\n this.updateNavigationItems();\r\n }\r\n\r\n handleImpersonationStop() {\r\n this.updateNavigationItems();\r\n }\r\n\r\n attached() {\r\n this.$dropdown = $(this.element.querySelector('ul[data-dropdown-menu]'));\r\n this.$dropdown.foundation();\r\n \r\n this.updateNavigationItems();\r\n this.userLoginSubscription = this.eventAggregator.subscribe('user.login', this.handleLogin);\r\n this.userLogoutSubscription = this.eventAggregator.subscribe('user.logout', this.handleLogout);\r\n this.userImpersonationStartSubscription = this.eventAggregator.subscribe('impersonation.start', this.handleImpersonationStart);\r\n this.userImpersonationStopSubscription = this.eventAggregator.subscribe('impersonation.stop', this.handleImpersonationStop);\r\n }\r\n\r\n detached() {\r\n this.$dropdown && this.$dropdown.foundation('destroy');\r\n\r\n this.userLoginSubscription && this.userLoginSubscription.dispose();\r\n this.userLogoutSubscription && this.userLogoutSubscription.dispose();\r\n this.userImpersonationStartSubscription && this.userImpersonationStartSubscription.dispose();\r\n this.userImpersonationStopSubscription && this.userImpersonationStopSubscription.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\n\r\n@inject(HttpClient)\r\nexport default class FaqService {\r\n constructor(httpClient) {\r\n this.httpClient = httpClient;\r\n }\r\n\r\n getFaqs(faqGroupId) {\r\n return this.httpClient.get(`help/faqs/${(faqGroupId ? `?faqGroupId=${faqGroupId}` : '')}`);\r\n }\r\n\r\n getFaq(id) {\r\n return this.httpClient.get(`help/faqs/${id}`);\r\n }\r\n\r\n deleteFaqs(ids) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`help/faqs?${query}`);\r\n }\r\n\r\n saveFaq(faq) {\r\n if (!faq.id)\r\n return this.httpClient.post('help/faqs/', faq);\r\n\r\n return this.httpClient.put(`help/faqs/${faq.id}`, faq);\r\n }\r\n\r\n updateFaqOrdinals(idOrdinalMap) {\r\n return this.httpClient.patch(`help/faqs/`, idOrdinalMap);\r\n }\r\n}\r\n","import { autoinject, buildQueryString } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { ExportTaskCollectionTemplate } from './export-task-collection-template';\r\n\r\n@autoinject\r\nexport default class ExportTaskCollectionTemplateService {\r\n constructor(private httpClient: HttpClient) {\r\n\r\n }\r\n\r\n getExportTaskCollectionTemplates(params?: any): Promise {\r\n const query = buildQueryString(params, true);\r\n return this.httpClient.get(`export-task-collection-templates${query ? '?' + query : ''}`) as any as Promise;\r\n }\r\n\r\n getExportTaskCollectionTemplate(id: number): Promise {\r\n return this.httpClient.get(`export-task-collection-templates/${id}`) as any as Promise;\r\n }\r\n\r\n createExportTaskCollectionTemplates(exportTaskCollectionTemplate: ExportTaskCollectionTemplate): Promise {\r\n return this.httpClient.post('export-task-collection-templates', exportTaskCollectionTemplate) as any as Promise;\r\n }\r\n\r\n updateExportTaskCollectionTemplates(exportTaskCollectionTemplate: ExportTaskCollectionTemplate): Promise {\r\n return this.httpClient.put('export-task-collection-templates', exportTaskCollectionTemplate) as any as Promise;\r\n } \r\n \r\n deleteExportTaskCollectionTemplates(ids: number[]) {\r\n var query = ids.map(id => `id=${id}`).join('&');\r\n return this.httpClient.delete(`export-task-collection-templates?${query}`) as any as Promise;\r\n }\r\n\r\n getExportTaskCollectionTemplateColumns(): Record {\r\n return this.httpClient.get('export-task-collection-templates/columns') as any as Record;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport { TestResult } from './test-result';\r\nimport { TestResultListQuery } from './test-results-query-filters';\r\n\r\n@autoinject\r\nexport class TestResultService {\r\n private baseRoute: string;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'test-results';\r\n }\r\n\r\n // This is to optimize the query for returning the actual results using limit\r\n // The previous implementation would create a massive 1+GB memory grant due to nvarchar(max) cols that can't be size reduced\r\n countTestResults(testResultListQuery: TestResultListQuery): Promise {\r\n var query = buildQueryString(testResultListQuery, true);\r\n return this.httpClient.get(\r\n `${this.baseRoute}/count${query ? `?${query}` : ''}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getTestResults(testResultListQuery: TestResultListQuery): Promise {\r\n var query = buildQueryString(testResultListQuery, true);\r\n return this.httpClient.get(\r\n `${this.baseRoute}${query ? `?${query}` : ''}`,\r\n ) as unknown as Promise;\r\n }\r\n\r\n getDownloadUrl(testResultListQuery: TestResultListQuery) {\r\n var query = buildQueryString(testResultListQuery, true);\r\n return `api/test-results/download${query ? `?${query}` : ''}`;\r\n }\r\n}\r\n","import { ColDef, ColGroupDef, GridOptions, ValueFormatterParams } from 'ag-grid-community';\r\nimport AgStatefulGridBuilder from 'infrastructure/ag-grid/ag-stateful-grid-builder';\r\nimport { AureliaCellRendererCompBase } from 'infrastructure/ag-grid/aurelia-cell-renderer-comp-base';\r\nimport CompareUtility from '../../../infrastructure/compare-utility';\r\n\r\nconst remediationLinkTemplate =\r\n '${data.name}';\r\nclass AgPointRemediationCellRenderer extends AureliaCellRendererCompBase {\r\n constructor() {\r\n super(remediationLinkTemplate);\r\n }\r\n}\r\n\r\nconst fromatRemediationStatus = (params: ValueFormatterParams): string => {\r\n switch (params.value) {\r\n case 1:\r\n return 'Not Started';\r\n case 2:\r\n return 'In Progress';\r\n case 3:\r\n return 'Completed';\r\n case 4:\r\n return 'Reviewed';\r\n case 5:\r\n return 'Rejected';\r\n }\r\n\r\n return '';\r\n};\r\n\r\nconst colDefs: (ColDef | ColGroupDef)[] = [\r\n {\r\n suppressMenu: true,\r\n headerName: 'Name',\r\n field: 'name',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n minWidth: 150,\r\n sort: 'asc',\r\n cellRenderer: AgPointRemediationCellRenderer,\r\n },\r\n {\r\n headerName: 'Assigned User',\r\n field: 'assignedUserFullName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n minWidth: 150,\r\n },\r\n {\r\n headerName: 'Approval User',\r\n field: 'approvalUserFullName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n minWidth: 150,\r\n },\r\n {\r\n headerName: 'Status',\r\n field: 'status',\r\n minWidth: 150,\r\n valueFormatter: fromatRemediationStatus,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Root Cause',\r\n field: 'remediationRootCauseName',\r\n },\r\n];\r\n\r\nconst baseGridOptions: GridOptions = {\r\n columnDefs: colDefs,\r\n suppressContextMenu: true,\r\n suppressColumnVirtualisation: true,\r\n};\r\n\r\nconst pointRemediationGrid = AgStatefulGridBuilder.create(baseGridOptions)\r\n .setDefaults()\r\n .withAutoHeight()\r\n .addStatefulness('map-point-remediation-grid')\r\n .build();\r\n\r\nexport { pointRemediationGrid };\r\n","import { GridOptions } from 'ag-grid-community';\r\nimport { AgBoolCellRenderer } from 'infrastructure/components/cell-renderers/ag-bool-cell-renderer';\r\n\r\nexport const testMethodManagementGridOptions: GridOptions = {\r\n columnDefs: [\r\n { field: 'testMethodId', headerName: 'Test Method Id', initialHide: true },\r\n {\r\n colId: 'select_checkbox',\r\n suppressMenu: true,\r\n headerName: 'Select',\r\n headerCheckboxSelection: true,\r\n headerCheckboxSelectionFilteredOnly: true,\r\n checkboxSelection: (params) =>\r\n params.data && (params.data.canHide || !params.data.isActive),\r\n hide: true,\r\n },\r\n {\r\n field: 'testMethodName',\r\n headerName: 'Test Method',\r\n },\r\n {\r\n field: 'planCount',\r\n headerName: 'Plan Count',\r\n },\r\n { field: 'unassignedTaskCount', headerName: 'Unassigned Task Count' },\r\n { field: 'specificationCount', headerName: 'Specification Count' },\r\n { field: 'capPlanCount', headerName: 'Cap Plan Count' },\r\n { field: 'isActive', headerName: 'Visible', cellRenderer: AgBoolCellRenderer },\r\n ],\r\n defaultColDef: {\r\n flex: 1,\r\n minWidth: 100,\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n },\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n rowSelection: 'multiple',\r\n};\r\n","export interface ExportTaskCollectionTemplateFooterOptions {\r\n cellText: string[];\r\n}\r\n\r\nexport const emptyExportTaskCollectionTemplateFooterOptions = (): ExportTaskCollectionTemplateFooterOptions => ({\r\n cellText: [],\r\n});\r\n","import {\r\n ColDef,\r\n ColGroupDef,\r\n GetQuickFilterTextParams,\r\n GridOptions,\r\n ICellRendererParams,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n} from 'ag-grid-community';\r\nimport moment from 'moment';\r\n\r\nconst checkbox = (params: ICellRendererParams): boolean => {\r\n return params.node.group === true;\r\n};\r\n\r\nconst formatApproved = (params: ValueFormatterParams): string => {\r\n if (typeof params.value === 'undefined') {\r\n return '';\r\n }\r\n\r\n switch (params.value) {\r\n case 'True':\r\n case 'TRUE':\r\n case true:\r\n return 'Yes';\r\n case 'False':\r\n case 'FALSE':\r\n case false:\r\n return 'No';\r\n default:\r\n return 'Incomplete';\r\n }\r\n};\r\n\r\nconst formatDateToLocal = (params: ValueFormatterParams): string => {\r\n if (!params.value) {\r\n return;\r\n }\r\n\r\n return moment(params.value).local().format('L');\r\n};\r\n\r\nconst ignoreQuickFilter = (params: GetQuickFilterTextParams): string => '';\r\n\r\nexport const generatePartialTestResultsColumnDefs = (): (ColDef | ColGroupDef)[] => [\r\n {\r\n headerName: 'Lab',\r\n field: 'labCode',\r\n chartDataType: 'category',\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n {\r\n headerName: 'Request Id',\r\n field: 'requestId',\r\n chartDataType: 'category',\r\n rowGroup: true,\r\n hide: true,\r\n },\r\n {\r\n headerName: 'Sample Id',\r\n field: 'sampleId',\r\n chartDataType: 'category',\r\n rowGroup: true,\r\n hide: true,\r\n },\r\n {\r\n headerName: 'Sample Received Date',\r\n field: 'sampleReceivedDate',\r\n chartDataType: 'series',\r\n valueFormatter: formatDateToLocal,\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n {\r\n headerName: 'Sample Description',\r\n field: 'sampleDescription',\r\n chartDataType: 'category',\r\n },\r\n {\r\n headerName: 'Composite',\r\n field: 'sampleComposite',\r\n chartDataType: 'category',\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n {\r\n headerName: 'Bill Code',\r\n field: 'billCode',\r\n chartDataType: 'category',\r\n },\r\n\r\n {\r\n headerName: 'Start of Testing Date',\r\n field: 'requestStartOfTestingDate',\r\n chartDataType: 'series',\r\n valueFormatter: formatDateToLocal,\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n {\r\n headerName: 'Collection Date',\r\n field: 'sampleCollectionDate',\r\n chartDataType: 'series',\r\n valueFormatter: formatDateToLocal,\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n {\r\n headerName: 'Result',\r\n field: 'qualitativeResult',\r\n valueGetter: (params: ValueGetterParams) => {\r\n return params.data?.qualitativeResult === 'Unknown'\r\n ? 'Pending'\r\n : params.data?.qualitativeResult;\r\n },\r\n },\r\n {\r\n headerName: 'Units',\r\n field: 'units',\r\n chartDataType: 'category',\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n\r\n {\r\n headerName: 'Approved',\r\n field: 'approved',\r\n chartDataType: 'category',\r\n valueFormatter: formatApproved,\r\n getQuickFilterText: ignoreQuickFilter,\r\n },\r\n];\r\n\r\nexport const partialTestResultGrid: GridOptions = {\r\n columnDefs: generatePartialTestResultsColumnDefs(),\r\n defaultColDef: {\r\n flex: 1,\r\n minWidth: 100,\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n enableValue: true,\r\n enableRowGroup: true,\r\n enablePivot: true,\r\n },\r\n autoGroupColumnDef: {\r\n minWidth: 250,\r\n headerName: 'Test',\r\n field: 'testMethodDescription',\r\n cellRenderer: 'agGroupCellRenderer',\r\n cellRendererParams: {\r\n checkbox,\r\n } as any,\r\n },\r\n rowSelection: 'multiple',\r\n groupSelectsChildren: true,\r\n suppressRowClickSelection: true,\r\n sideBar: 'columns',\r\n animateRows: true,\r\n statusBar: {\r\n statusPanels: [\r\n { statusPanel: 'agTotalAndFilteredRowCountComponent', align: 'left' },\r\n { statusPanel: 'agTotalRowCountComponent', align: 'center' },\r\n { statusPanel: 'agFilteredRowCountComponent' },\r\n { statusPanel: 'agSelectedRowCountComponent' },\r\n { statusPanel: 'agAggregationComponent' },\r\n ],\r\n },\r\n suppressAggFuncInHeader: true,\r\n enableRangeSelection: true,\r\n enableCharts: true,\r\n popupParent: document.body,\r\n customChartThemes: {\r\n passFailCustomTheme: {\r\n baseTheme: 'ag-default',\r\n palette: {\r\n fills: ['#25d925', '#c00', '#9fd0cb'],\r\n strokes: ['#24d824', '#cc0000', '#9ed1cc'],\r\n },\r\n },\r\n },\r\n chartThemes: ['passFailCustomTheme', 'ag-default', 'ag-pastel', 'ag-vivid'],\r\n};\r\n","import CollectionType from 'location-testing/collection-type';\r\nimport GenerateTasksDistributionMethod from './generate-tasks-distribution-method';\r\nimport GenerateTasksPointZoneDistributionMethod from './generate-tasks-point-zone-distribution-method';\r\n\r\nexport default class TaskGenerationRequest {\r\n planId: number;\r\n\r\n timeZone: any;\r\n\r\n startDate: Date;\r\n endDate: Date;\r\n\r\n requestedTaskCount: number;\r\n tasksToBeGenerated: number; // used only for display purposes\r\n\r\n riskPriorities: TaskRequestPriority[];\r\n collectionType: CollectionType;\r\n\r\n testMethodIds: number[];\r\n\r\n blackoutDates: Date[];\r\n\r\n blackoutSundays: boolean;\r\n blackoutMondays: boolean;\r\n blackoutTuesdays: boolean;\r\n blackoutWednesdays: boolean;\r\n blackoutThursdays: boolean;\r\n blackoutFridays: boolean;\r\n blackoutSaturdays: boolean;\r\n\r\n pointDistributionMethod: GenerateTasksDistributionMethod;\r\n\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod;\r\n pointZoneDistributions: TaskGenerationZoneDistribution[];\r\n}\r\n\r\nexport class TaskRequestPriority {\r\n risk: string;\r\n percentage: number;\r\n}\r\n\r\nexport class TaskGenerationZoneDistribution {\r\n zone: number;\r\n value: number;\r\n type: 'count' | 'percentage';\r\n\r\n constructor(zone: number, value: number, type: 'count' | 'percentage') {\r\n this.zone = zone;\r\n this.value = value;\r\n this.type = type;\r\n }\r\n\r\n private static getZoneForServer(\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod,\r\n zoneDistributions: any,\r\n zonePercentageCount: any) {\r\n const { zone1, zone2, zone3, zone4 } = pointZoneDistributionMethod == GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? zoneDistributions\r\n : zonePercentageCount;\r\n\r\n return { zone1, zone2, zone3, zone4 };\r\n }\r\n\r\n private static getZoneForUI(\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod,\r\n zoneDistributions: any,\r\n zonePercentageCount: any) {\r\n const { zone1, zone2, zone3, zone4 } = (pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.DISCRETE ||\r\n pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.PERCENTAGE)\r\n ? zoneDistributions\r\n : zonePercentageCount;\r\n\r\n return { zone1, zone2, zone3, zone4 };\r\n }\r\n\r\n private static getType(pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod) {\r\n return (pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.DISCRETE ||\r\n pointZoneDistributionMethod === GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE)\r\n ? 'count'\r\n : 'percentage'\r\n }\r\n\r\n public static createAllZonesForServer(\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod,\r\n zoneDistributions: any,\r\n zonePercentageCount: any) {\r\n const { zone1, zone2, zone3, zone4 } = this.getZoneForServer(pointZoneDistributionMethod,\r\n zoneDistributions,\r\n zonePercentageCount);\r\n const type = this.getType(pointZoneDistributionMethod);\r\n\r\n return [\r\n new TaskGenerationZoneDistribution(1, Number(zone1), type),\r\n new TaskGenerationZoneDistribution(2, Number(zone2), type),\r\n new TaskGenerationZoneDistribution(3, Number(zone3), type),\r\n new TaskGenerationZoneDistribution(4, Number(zone4), type)\r\n ];\r\n }\r\n\r\n public static createAllZonesForUI(\r\n pointZoneDistributionMethod: GenerateTasksPointZoneDistributionMethod,\r\n zoneDistributions: any,\r\n zonePercentageCount: any) {\r\n const { zone1, zone2, zone3, zone4 } = this.getZoneForUI(pointZoneDistributionMethod,\r\n zoneDistributions,\r\n zonePercentageCount);\r\n const type = this.getType(pointZoneDistributionMethod);\r\n\r\n return [\r\n new TaskGenerationZoneDistribution(1, Number(zone1), type),\r\n new TaskGenerationZoneDistribution(2, Number(zone2), type),\r\n new TaskGenerationZoneDistribution(3, Number(zone3), type),\r\n new TaskGenerationZoneDistribution(4, Number(zone4), type)\r\n ];\r\n }\r\n}\r\n\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-http-client';\r\nimport { buildQueryString } from 'aurelia-path';\r\nimport { PartialTestResult } from './partial-test-result';\r\nimport { PartialTestResultListQuery } from './partial-test-results-query-filters';\r\n\r\n@autoinject\r\nexport class PartialTestResultService {\r\n private baseRoute: string;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n this.baseRoute = 'partial-test-results';\r\n }\r\n\r\n getTestResults(\r\n partialTestResultListQuery: PartialTestResultListQuery,\r\n ): Promise {\r\n var query = buildQueryString(partialTestResultListQuery, true);\r\n return this.httpClient.get(\r\n `${this.baseRoute}${query ? `?${query}` : ''}`,\r\n ) as unknown as Promise;\r\n }\r\n}\r\n","import { autoinject, BindingEngine, Disposable, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport DisplayOnlyElementManager from './display-only-element-manager';\r\nimport LabelTemplateService from './label-template-service';\r\nimport LabelTemplateType from './label-template-type';\r\nimport SampleLabelDisplayOnlyElementManager from './sample-label-display-only-element-manager';\r\nimport UiLabelTemplate from './ui-label-template';\r\nimport UiLabelTemplateElement from './ui-label-template-element';\r\n\r\n@autoinject\r\nexport class LabelTemplateList {\r\n organizations: any[];\r\n uiLabelTemplate: UiLabelTemplate;\r\n zoom: number;\r\n @observable selectedElement: UiLabelTemplateElement;\r\n\r\n objectNameOptions: any;\r\n fieldNameOptions: any;\r\n validationController: ValidationController;\r\n formChanged: boolean;\r\n zoomLevels: number[];\r\n zoomLevelIndex: number;\r\n canZoomIn: boolean;\r\n canZoomOut: boolean;\r\n canEditLabelTemplates: boolean;\r\n missingOrganizationConfiguration: boolean;\r\n labelTemplateTypeOptions: any;\r\n uiLabelTemplateWidthChangedSubscription: Disposable;\r\n uiLabelTemplateHeightChangedSubscription: Disposable;\r\n uiLabelTemplateTypeChangedSubscription: Disposable;\r\n revertingLabelTemplateType: boolean;\r\n allowAddRemoveElements: boolean;\r\n displayOnlyElementManager: DisplayOnlyElementManager;\r\n sampleLabelFontSize: number;\r\n\r\n constructor(\r\n validationControllerFactory: ValidationControllerFactory,\r\n private bindingEngine: BindingEngine,\r\n private router: Router,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n private labelTemplateService: LabelTemplateService,\r\n ) {\r\n this.logger.name = 'label-template-detail';\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.zoomLevelIndex = 5;\r\n this.zoomLevels = [25, 50, 100, 200, 300, 400, 500];\r\n this.canZoomIn = true;\r\n this.canZoomOut = true;\r\n\r\n this.revertingLabelTemplateType = false;\r\n this.allowAddRemoveElements = false;\r\n\r\n this.selectedElement = null;\r\n\r\n this.canEditLabelTemplates =\r\n this.securityService.hasPermission('EditLabelTemplates') &&\r\n !this.securityService.isImpersonating();\r\n\r\n this.labelTemplateTypeOptions = LabelTemplateType.getOptions();\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n let [labelTemplate, organizations] = await Promise.all([\r\n params.id !== 'create'\r\n ? this.labelTemplateService.getLabelTemplate(parseInt(params.id))\r\n : {\r\n id: null,\r\n type: null,\r\n width: 162,\r\n height: 90,\r\n elements: '[]', // JSON string to match server response.\r\n organizationConfigurations: [],\r\n isActive: true,\r\n batchTestMethods: false,\r\n },\r\n this.userService.getCurrentUserOrganizations(),\r\n ]);\r\n\r\n this.uiLabelTemplate = UiLabelTemplate.fromModel(labelTemplate, organizations);\r\n this.subscribePropertyChanges(this.uiLabelTemplate);\r\n\r\n this.sampleLabelFontSize = this.uiLabelTemplate.elements[0]?.fontSize || 6;\r\n this.initializeDisplayOnlyElements(this.uiLabelTemplate.type);\r\n\r\n this.organizations = organizations;\r\n\r\n this.loadFieldOptions();\r\n this.setupValidation();\r\n } catch (error) {\r\n this.logger.error('Error loading label template.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Label Template',\r\n 'An error occurred while loading the label template. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n subscribePropertyChanges(uiLabelTemplate: UiLabelTemplate) {\r\n this.uiLabelTemplateWidthChangedSubscription = this.bindingEngine\r\n .propertyObserver(this.uiLabelTemplate, 'width')\r\n .subscribe(this.handleUiLabelTemplateWidthChanged.bind(this));\r\n\r\n this.uiLabelTemplateHeightChangedSubscription = this.bindingEngine\r\n .propertyObserver(this.uiLabelTemplate, 'height')\r\n .subscribe(this.handleUiLabelTemplateHeightChanged.bind(this));\r\n\r\n this.uiLabelTemplateTypeChangedSubscription = this.bindingEngine\r\n .propertyObserver(this.uiLabelTemplate, 'type')\r\n .subscribe(this.handleUiLabelTemplateTypeChanged.bind(this));\r\n }\r\n\r\n deactivate() {\r\n this.uiLabelTemplateWidthChangedSubscription?.dispose();\r\n this.uiLabelTemplateHeightChangedSubscription?.dispose();\r\n this.uiLabelTemplateTypeChangedSubscription?.dispose();\r\n }\r\n\r\n handleUiLabelTemplateWidthChanged() {\r\n this.displayOnlyElementManager?.positionDisplayOnlyElements();\r\n }\r\n\r\n handleUiLabelTemplateHeightChanged() {\r\n this.displayOnlyElementManager?.positionDisplayOnlyElements();\r\n }\r\n\r\n async handleUiLabelTemplateTypeChanged(type, oldType) {\r\n this.selectedElement = null;\r\n\r\n // Bail out (and clear flag) if reverting the template type.\r\n if (this.revertingLabelTemplateType) {\r\n this.revertingLabelTemplateType = false;\r\n return;\r\n }\r\n\r\n // Do not prompt user first time the template type is set.\r\n if (!oldType) {\r\n this.initializeDisplayOnlyElements(type);\r\n return;\r\n }\r\n\r\n if (type !== oldType) {\r\n // Prompt user if OK to clear out label elements.\r\n let confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Clear all label elements?',\r\n 'Switching between label types will clear out all the label elements.',\r\n );\r\n if (confirmed) {\r\n this.clearElements();\r\n this.initializeDisplayOnlyElements(type);\r\n this.uiLabelTemplate.batchTestMethods = false;\r\n return;\r\n }\r\n\r\n // Revert value back if user cancels the confirmation.\r\n this.revertingLabelTemplateType = true;\r\n this.uiLabelTemplate.type = oldType;\r\n }\r\n }\r\n\r\n clearElements() {\r\n for (let element of this.uiLabelTemplate.elements) this.tearDownElementValidation(element);\r\n\r\n this.uiLabelTemplate.elements.splice(0);\r\n }\r\n\r\n initializeDisplayOnlyElements(templateType: string) {\r\n if (templateType !== 'Sample') {\r\n this.allowAddRemoveElements = true;\r\n this.displayOnlyElementManager = null;\r\n return;\r\n }\r\n\r\n this.allowAddRemoveElements = false;\r\n\r\n /*\r\n * HACK/WORKAROUND\r\n * Sample label templates persist an empty ('[]') for elements\r\n * Task label templates use built in logic to define layout of elements\r\n * If we get this far then this sample label template can either:\r\n * (1) Be formatted using it's persisted element properties OR\r\n * (2) Be display only and setup to save formatted elements for next persist\r\n */\r\n if (this.uiLabelTemplate.elements.length) {\r\n return;\r\n }\r\n\r\n this.displayOnlyElementManager = new SampleLabelDisplayOnlyElementManager(\r\n this.uiLabelTemplate,\r\n );\r\n this.displayOnlyElementManager.createDisplayOnlyElements();\r\n }\r\n\r\n addOrganizationConfiguration() {\r\n let organizationConfiguration = {\r\n id: null,\r\n organizationId: null,\r\n templateName: null,\r\n isActive: true,\r\n };\r\n\r\n this.uiLabelTemplate.organizationConfigurations.push(organizationConfiguration);\r\n this.setupOrganizationConfigurationValidation(organizationConfiguration);\r\n this.missingOrganizationConfiguration = false;\r\n }\r\n\r\n removeOrganizationConfiguration(organizationConfiguration) {\r\n this.tearDownOrganizationConfigurationValidation(organizationConfiguration);\r\n this.uiLabelTemplate.organizationConfigurations.splice(\r\n this.uiLabelTemplate.organizationConfigurations.indexOf(organizationConfiguration),\r\n 1,\r\n );\r\n this.missingOrganizationConfiguration =\r\n this.uiLabelTemplate.organizationConfigurations.length === 0;\r\n }\r\n\r\n selectElement(element, $event: MouseEvent) {\r\n if (!element || !element.displayOnly) this.selectedElement = element;\r\n\r\n $event?.stopImmediatePropagation();\r\n }\r\n\r\n // Set all properties the same until all formatting(task) is allowed for sample labels\r\n sampleLabelFontSizeChanged() {\r\n this.uiLabelTemplate.elements.forEach((e) => {\r\n e.fontSize = Number(this.sampleLabelFontSize);\r\n e.objectName = 'sampleLabel';\r\n e.fieldName = 'sampleLabelField';\r\n });\r\n }\r\n\r\n async selectedElementChanged(element, oldElement) {\r\n if (oldElement) this.validateElement(oldElement);\r\n\r\n if (element && element.error) this.validateElement(element);\r\n }\r\n\r\n async validateElement(element: UiLabelTemplateElement) {\r\n var result = await this.validationController.validate({ object: element });\r\n element.error = !result.valid;\r\n }\r\n\r\n addElement() {\r\n let element = UiLabelTemplateElement.new(this.uiLabelTemplate, 'text', false);\r\n\r\n this.setupElementValidation(element);\r\n this.uiLabelTemplate.elements.push(element);\r\n this.selectedElement = element;\r\n }\r\n\r\n removeSelectedElement() {\r\n if (!this.selectedElement) return;\r\n\r\n this.tearDownElementValidation(this.selectedElement);\r\n this.uiLabelTemplate.elements.splice(\r\n this.uiLabelTemplate.elements.indexOf(this.selectedElement),\r\n 1,\r\n );\r\n this.selectedElement = null;\r\n }\r\n\r\n zoomIn() {\r\n this.canZoomOut = true;\r\n this.zoomLevelIndex++;\r\n\r\n if (this.zoomLevelIndex === this.zoomLevels.length - 1) this.canZoomIn = false;\r\n }\r\n\r\n zoomOut() {\r\n this.canZoomIn = true;\r\n this.zoomLevelIndex--;\r\n\r\n if (this.zoomLevelIndex === 0) this.canZoomOut = false;\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n batchTestMethodsChanged() {\r\n this.configureFieldNameOptionsForBatchTestMethods();\r\n }\r\n\r\n loadFieldOptions() {\r\n this.objectNameOptions = {\r\n Task: [{ title: 'Task', value: 'taskLabel' }],\r\n };\r\n\r\n this.fieldNameOptions = {\r\n Task: {\r\n taskLabel: [\r\n { group: 'Task', title: 'ID', value: 'taskId' },\r\n { group: 'Task', title: 'Sample Description', value: 'taskSampleDescription' },\r\n { group: 'Task', title: 'Operations Timing', value: 'operationsTiming' },\r\n { group: 'Task', title: 'Collection Type', value: 'collectionType' },\r\n { group: 'Task', title: 'Assigned Username', value: 'taskAssignedUsername' },\r\n { group: 'Task', title: 'Target Date Time', value: 'targetDateTime' },\r\n { group: 'Task', title: 'Collected Date Time', value: 'collectedDateTime' },\r\n { group: 'Task', title: 'Internal ID', value: 'organizationInternalId' },\r\n { group: 'Point', title: 'ID', value: 'pointId' },\r\n { group: 'Point', title: 'Name', value: 'samplePointName' },\r\n { group: 'Point', title: 'Description', value: 'samplePointDescription' },\r\n { group: 'Point', title: 'Room', value: 'samplePointRoom' },\r\n { group: 'Point', title: 'Zone', value: 'samplePointZone' },\r\n { group: 'Point', title: 'Type', value: 'samplePointType' },\r\n { group: 'Point', title: 'Mobile', value: 'samplePointMobile' },\r\n { group: 'Organization', title: 'ID', value: 'organizationId' },\r\n { group: 'Organization', title: 'Name', value: 'organizationName' },\r\n { group: 'Map', title: 'ID', value: 'mapId' },\r\n { group: 'Map', title: 'Name', value: 'mapName' },\r\n { group: 'Map', title: 'Description', value: 'mapDescription' },\r\n { group: 'Plan', title: 'ID', value: 'planId' },\r\n { group: 'Plan', title: 'Name', value: 'planName' },\r\n { group: 'Plan', title: 'Description', value: 'planDescription' },\r\n { group: 'Plan', title: 'Type', value: 'planType' },\r\n {\r\n group: 'Plan',\r\n title: 'Schedule Cycle Duration Days',\r\n value: 'planScheduleCycleDurationDays',\r\n },\r\n { group: 'Point', title: 'ID', value: 'remediationId' },\r\n { group: 'Point', title: 'Name', value: 'remediationName' },\r\n { group: 'Point', title: 'Description', value: 'remediationDescription' },\r\n {\r\n group: 'Point',\r\n title: 'Assigned Username',\r\n value: 'remediationAssignedUsername',\r\n },\r\n {\r\n group: 'Point',\r\n title: 'Approval Username',\r\n value: 'remediationApprovalUsername',\r\n },\r\n { group: 'Point', title: 'Status', value: 'remediationStatus' },\r\n { group: 'Test Method', title: 'ID', value: 'testMethodExternalId' },\r\n { group: 'Test Method', title: 'Name', value: 'testMethodName' },\r\n { group: 'Test Method', title: 'Code', value: 'testMethodBillCode' },\r\n {\r\n group: 'Test Method',\r\n title: 'Batched Test Methods',\r\n value: 'batchedTestMethods',\r\n },\r\n ],\r\n },\r\n };\r\n\r\n this.configureFieldNameOptionsForBatchTestMethods();\r\n }\r\n\r\n fieldNameRules = {\r\n disabledForStandardMode: ['batchedTestMethods'],\r\n disabledForBatchMode: ['testMethodExternalId', 'testMethodName', 'testMethodBillCode'],\r\n };\r\n\r\n configureFieldNameOptionsForBatchTestMethods() {\r\n this.fieldNameOptions['Task'].taskLabel.forEach((option) => {\r\n option.disabled = this.uiLabelTemplate.batchTestMethods\r\n ? this.fieldNameRules.disabledForBatchMode.includes(option.value)\r\n : this.fieldNameRules.disabledForStandardMode.includes(option.value);\r\n });\r\n\r\n this.uiLabelTemplate.elements.forEach((element) => {\r\n if (\r\n (this.uiLabelTemplate.batchTestMethods &&\r\n this.fieldNameRules.disabledForBatchMode.includes(element.fieldName)) ||\r\n (!this.uiLabelTemplate.batchTestMethods &&\r\n this.fieldNameRules.disabledForStandardMode.includes(element.fieldName))\r\n ) {\r\n element.fieldName = null;\r\n }\r\n });\r\n }\r\n\r\n setupValidation() {\r\n ValidationRules.ensure('width')\r\n .required()\r\n .satisfies((w) => 36 <= w && w <= 1500)\r\n .ensure('height')\r\n .required()\r\n .satisfies((h) => 36 <= h && h <= 1500)\r\n .ensure('type')\r\n .required()\r\n .on(this.uiLabelTemplate);\r\n\r\n for (let organizationConfiguration of this.uiLabelTemplate.organizationConfigurations)\r\n this.setupOrganizationConfigurationValidation(organizationConfiguration);\r\n\r\n for (let element of this.uiLabelTemplate.elements.filter((e) => !e.displayOnly))\r\n this.setupElementValidation(element);\r\n }\r\n\r\n setupOrganizationConfigurationValidation(organizationConfiguration) {\r\n let ensureSingleOccurrence = (organizationId) => {\r\n let occurrences = this.uiLabelTemplate.organizationConfigurations.filter(\r\n (c) => c.organizationId === organizationId,\r\n ).length;\r\n\r\n return occurrences === 1;\r\n };\r\n\r\n ValidationRules.ensure('organizationId')\r\n .required()\r\n .satisfies(ensureSingleOccurrence)\r\n .ensure('templateName')\r\n .required()\r\n .on(organizationConfiguration);\r\n }\r\n\r\n tearDownOrganizationConfigurationValidation(organizationConfiguration) {\r\n ValidationRules.off(organizationConfiguration);\r\n }\r\n\r\n setupElementValidation(element) {\r\n ValidationRules.ensure((e: UiLabelTemplateElement) => e.objectName)\r\n .required()\r\n .when((e) => e.mode === 'field')\r\n .ensure((e: UiLabelTemplateElement) => e.fieldName)\r\n .required()\r\n .when((e) => e.mode === 'field')\r\n .ensure((e: UiLabelTemplateElement) => e.template)\r\n .required()\r\n .when((e) => e.mode === 'template')\r\n .ensure((e: UiLabelTemplateElement) => e.width)\r\n .required()\r\n .satisfies((width, e) => 10 <= width && width <= this.uiLabelTemplate.width - e.x)\r\n .ensure((e: UiLabelTemplateElement) => e.x)\r\n .required()\r\n .satisfies((x, e) => 0 <= x && x <= this.uiLabelTemplate.width - e.width)\r\n .ensure((e: UiLabelTemplateElement) => e.y)\r\n .required()\r\n .satisfies((y) => 0 <= y && y <= this.uiLabelTemplate.height)\r\n .ensure((e: UiLabelTemplateElement) => e.fontSize)\r\n .required()\r\n .satisfies((fontSize) => 3 <= fontSize && fontSize <= 72)\r\n .on(element);\r\n }\r\n\r\n tearDownElementValidation(element) {\r\n ValidationRules.off(element);\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n\r\n for (let result of aggregateResult.results)\r\n if (!result.valid && result.object instanceof UiLabelTemplateElement)\r\n result.object.error = true;\r\n\r\n this.missingOrganizationConfiguration =\r\n this.uiLabelTemplate.organizationConfigurations.length === 0;\r\n\r\n for (let element of this.uiLabelTemplate.elements) await this.validateElement(element);\r\n\r\n let errorElements = this.uiLabelTemplate.elements.filter((e) => e.error);\r\n\r\n if (\r\n !aggregateResult.valid ||\r\n this.missingOrganizationConfiguration ||\r\n errorElements.length !== 0\r\n ) {\r\n this.pageContext.showErrorOverlay(\r\n 'Part of this form is not valid. Please correct any issues and save again.',\r\n );\r\n return;\r\n }\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n let labelTemplate = this.uiLabelTemplate.toModel();\r\n\r\n let savedLabelTemplate = await this.labelTemplateService.saveLabelTemplate(\r\n labelTemplate,\r\n );\r\n this.uiLabelTemplate.id = savedLabelTemplate.id;\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Label template saved successfully.');\r\n\r\n this.router.navigateToRoute(\r\n 'label-template-detail',\r\n { id: this.uiLabelTemplate.id },\r\n { replace: true },\r\n );\r\n } catch (error) {\r\n this.logger.error('Error saving label template.', error, {\r\n uiLabelTemplate: this.uiLabelTemplate,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Label Template',\r\n this.getApiErrorMessage(error.apiErrorCode),\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(apiErrorCode: number) {\r\n return 'An error occurred while saving the label template. Please try again later.';\r\n }\r\n\r\n cancel() {\r\n this.router.navigateToRoute('label-template-list');\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".form-block.label-info .float-left{margin-bottom:0}.label-template{background:#fff;border:solid 1px #aaa;position:relative}.label-template-element{border:solid 1px #aaaaaa5c;position:absolute;word-break:break-all}.label-template-element:not(.display-only){cursor:pointer}.label-template-element.selected{border:solid 1px #2fc7f3}.label-template-element.error{border:solid 1px #db2121}p.label-template-inch-label{display:inline-block;padding-left:8px;font-size:16px !important}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport RecordStatus, { getRecordStatusOptions } from 'record-status';\r\nimport CompareUtility from 'infrastructure/compare-utility';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SecurityService from 'security/security-service';\r\nimport UserService from 'users/user-service';\r\nimport LabelTemplateType from './label-template-type';\r\nimport UiLabelTemplate from './ui-label-template';\r\nimport LabelTemplateService from './label-template-service';\r\n\r\n@autoinject\r\nexport class LabelTemplateList {\r\n @observable filterText;\r\n\r\n // filters\r\n applyFiltersSubscription: Subscription;\r\n clearFiltersSubscription: Subscription;\r\n\r\n recordStatusOptions: SelectorOption[];\r\n selectedRecordStatus: RecordStatus;\r\n\r\n gridOptions;\r\n labelTemplateTypeOptions: SelectorOption[];\r\n allSelected: boolean;\r\n selectedActiveLabelTemplates: any[];\r\n canEditLabelTemplates: boolean;\r\n selectedLabelTemplateTypes: string[] = [];\r\n uiLabelTemplates: UiLabelTemplate[];\r\n uiLabelTemplatesView: any[];\r\n organizations: any[];\r\n selectedOrganizations: any[] = [];\r\n filterCount: number;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private labelTemplateService: LabelTemplateService,\r\n private userService: UserService\r\n ) {\r\n this.logger.name = 'label-template-list';\r\n\r\n this.filterText = '';\r\n\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template: '',\r\n headerCellTemplate: '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Type',\r\n field: 'typeCaption',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 100\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Size',\r\n field: 'sizeCaption',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 100\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Configured For',\r\n field: 'configuredForCaption',\r\n template: '${data.configuredForCaption}',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n ],\r\n defaultColDef: {\r\n sortable: true\r\n }\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveLabelTemplates = [];\r\n this.selectedRecordStatus = RecordStatus.ACTIVE;\r\n this.canEditLabelTemplates = this.securityService.hasPermission('EditLabelTemplates') && !this.securityService.isImpersonating();\r\n this.handleApplyFilters = this.handleApplyFilters.bind(this);\r\n this.handleClearFilters = this.handleClearFilters.bind(this);\r\n }\r\n\r\n navigateToLabelTemplateDetail(id) {\r\n this.router.navigateToRoute('label-template-detail', { id });\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.uiLabelTemplatesView.every(t => t.isSelected);\r\n this.setSelectedActiveLabelTemplates();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.uiLabelTemplatesView) {\r\n this.allSelected = !this.uiLabelTemplatesView.every(t => t.isSelected);\r\n\r\n for (let t of this.uiLabelTemplatesView)\r\n t.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveLabelTemplates();\r\n\r\n return true;\r\n }\r\n\r\n setSelectedActiveLabelTemplates() {\r\n this.selectedActiveLabelTemplates = this.uiLabelTemplatesView.filter(t => t.isSelected && t.isActive);\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateLabelTemplatesView();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.updateLabelTemplatesView();\r\n }\r\n\r\n handleClearFilters() {\r\n this.selectedLabelTemplateTypes = [];\r\n this.selectedRecordStatus = RecordStatus.ACTIVE;\r\n this.updateLabelTemplatesView();\r\n }\r\n\r\n updateLabelTemplatesView() {\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n if (this.uiLabelTemplates) {\r\n this.uiLabelTemplatesView = this.uiLabelTemplates.filter(t =>\r\n this.matchSelectedLabelTemplateTypes(t) &&\r\n (t.configuredForCaption || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 &&\r\n this.matchSelectedRecordStatus(t) &&\r\n (this.selectedOrganizations.length === 0 || this.selectedOrganizations.some(o => t.organizationConfigurations.some(c => o.id === c.organizationId)))\r\n );\r\n\r\n this.allSelected = this.uiLabelTemplatesView.every(t => t.isSelected);\r\n }\r\n\r\n this.filterCount =\r\n (this.selectedLabelTemplateTypes.length != 0 ? 1 : 0) +\r\n (this.selectedOrganizations.length != 0 ? 1 : 0) +\r\n (this.selectedRecordStatus !== RecordStatus.ACTIVE ? 1 : 0);\r\n }\r\n\r\n matchSelectedLabelTemplateTypes(uiLabelTemplate: UiLabelTemplate) {\r\n if (!this.selectedLabelTemplateTypes || !this.selectedLabelTemplateTypes.length)\r\n return true;\r\n\r\n return this.selectedLabelTemplateTypes.some(type => type === uiLabelTemplate.type);\r\n }\r\n\r\n matchSelectedRecordStatus(uiLabelTemplate: UiLabelTemplate) {\r\n if (this.selectedRecordStatus === RecordStatus.ALL)\r\n return true;\r\n\r\n let filteredIsActiveValue = this.selectedRecordStatus === RecordStatus.ACTIVE;\r\n return uiLabelTemplate.isActive === filteredIsActiveValue;\r\n }\r\n\r\n activate(params) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe('filters.apply', this.handleApplyFilters);\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe('filters.clear', this.handleClearFilters);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.recordStatusOptions = getRecordStatusOptions();\r\n this.labelTemplateTypeOptions = LabelTemplateType.getOptions();\r\n\r\n let [labelTemplates, organizations] = await Promise.all([\r\n this.labelTemplateService.getLabelTemplates(),\r\n this.userService.getCurrentUserOrganizations()\r\n ]);\r\n\r\n this.organizations = organizations;\r\n this.uiLabelTemplates = labelTemplates.map(t => UiLabelTemplate.fromModel(t, organizations));\r\n this.updateLabelTemplatesView();\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error loading label templates.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Label Templates',\r\n 'An error occurred while loading the label templates. Please try again later.');\r\n }\r\n })();\r\n }\r\n\r\n deactivate() {\r\n this.applyFiltersSubscription && this.applyFiltersSubscription.dispose();\r\n this.clearFiltersSubscription && this.clearFiltersSubscription.dispose();\r\n }\r\n\r\n async deleteLabelTemplate(labelTemplate) {\r\n let confirmed = await this.dialogPresenter.showConfirmation('Delete Label Template', 'Are you sure you want to delete this label template?')\r\n if (!confirmed)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.labelTemplateService.deleteLabelTemplates([labelTemplate.id]);\r\n\r\n this.pageContext.showSuccessOverlay('Label template deleted successfully.');\r\n\r\n labelTemplate.isSelected = false;\r\n labelTemplate.isActive = false;\r\n\r\n this.setSelectedActiveLabelTemplates();\r\n } catch (error) {\r\n this.logger.error('Error deleting label template.', error, { labelTemplateId: labelTemplate.id });\r\n this.handleDeleteError(error, false);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async deleteSelectedLabelTemplates() {\r\n let labelTemplatesToDelete = this.uiLabelTemplatesView.filter(t => t.isSelected);\r\n if (!labelTemplatesToDelete.length)\r\n return;\r\n\r\n let confirmed = await this.dialogPresenter.showConfirmation('Delete Selected Label Templates', 'Are you sure you want to delete the selected label templates?');\r\n if (!confirmed)\r\n return;\r\n\r\n var labelTemplateIds = labelTemplatesToDelete.map(t => t.id);\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.labelTemplateService.deleteLabelTemplates(labelTemplateIds);\r\n this.pageContext.showSuccessOverlay('Selected label templates deleted successfully.');\r\n\r\n for (let t of labelTemplatesToDelete) {\r\n t.isSelected = false;\r\n t.isActive = false;\r\n\r\n this.setSelectedActiveLabelTemplates();\r\n }\r\n\r\n this.updateLabelTemplatesView();\r\n } catch (error) {\r\n this.logger.error('Error deleting label templates.', error, { labelTemplateIds });\r\n this.handleDeleteError(error, true);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n handleDeleteError(error, multiple) {\r\n this.dialogPresenter\r\n .showAlert(\r\n 'Error Deleting Label Template' + (multiple ? 's' : ''),\r\n this.getApiErrorMessage(error.apiErrorCode, multiple));\r\n }\r\n\r\n getApiErrorMessage(errorCode, multiple) {\r\n if (errorCode === 2)\r\n return 'You dont have access to delete the label template' + (multiple ? 's' : '');\r\n\r\n return 'An unexpected error occurred while trying to delete label templates. Please try again later.';\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport DialogPresenter from '../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../infrastructure/logger';\r\nimport PageContext from '../infrastructure/page-context';\r\nimport Validators from '../infrastructure/validation/validators';\r\nimport LabService from './lab-service';\r\n\r\n@inject(Router, ValidationControllerFactory, PageContext, Logger, DialogPresenter, LabService)\r\nexport default class LabDetail {\r\n validationController: ValidationController;\r\n\r\n lab: any;\r\n formChanged: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n validationControllerFactory: ValidationControllerFactory,\r\n private pageContext: PageContext,\r\n private logger: Logger,\r\n private dialogPresenter: DialogPresenter,\r\n private labService: LabService,\r\n ) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.pageContext = pageContext;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'lab-detail';\r\n\r\n this.dialogPresenter = dialogPresenter;\r\n this.labService = labService;\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n try {\r\n this.pageContext.isLoading = true;\r\n this.lab = await this.labService.getLab(params.id);\r\n\r\n ValidationRules.ensure('address1')\r\n .displayName('Address')\r\n .required()\r\n .ensure('city')\r\n .displayName('City')\r\n .required()\r\n .ensure('state')\r\n .displayName('State')\r\n .required()\r\n .ensure('postalCode')\r\n .displayName('Postal Code')\r\n .required()\r\n .then()\r\n .satisfies((val, o: any) => Validators.isValidPostalCode(val))\r\n .ensure('phoneNumber')\r\n .displayName('Phone')\r\n .required()\r\n .ensure('faxNumber')\r\n .displayName('Fax')\r\n .required()\r\n .ensure('contactTitle')\r\n .displayName('Contact Title')\r\n .required()\r\n .ensure('contactName')\r\n .displayName('Contact Name')\r\n .required()\r\n .ensure('contactEmail')\r\n .displayName('Contact Email')\r\n .required()\r\n .email()\r\n .ensure('requestSubmissionEmail')\r\n .displayName('Request Submission Email')\r\n .required()\r\n .email()\r\n .on(this.lab);\r\n\r\n this.validationController.addObject(this.lab);\r\n } catch (error) {\r\n this.logger.error('Error loading lab', error, { labId: params.id });\r\n\r\n var errorAlertPromise =\r\n error.apiErrorCode === 1\r\n ? this.dialogPresenter.showAlert(\r\n 'Error Loading Lab',\r\n 'The current lab doesnt exist.',\r\n )\r\n : this.dialogPresenter.showAlert(\r\n 'Error Loading Lab',\r\n 'An error occurred while loading the current lab. Please try again later.',\r\n );\r\n\r\n errorAlertPromise.then(() => {\r\n this.router.navigateToRoute('lab-list');\r\n });\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('lab-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var result = await this.labService.saveLab(this.lab);\r\n this.lab.labDetailId = result.labDetailId;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Lab saved successfully.');\r\n this.router.navigateToRoute('lab-detail', { id: this.lab.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving lab', error, { lab: this.lab });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Lab',\r\n this.getApiErrorMessage(error.apiErrorCode),\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n if (errorCode === 1) return 'No record was found for the specified lab ID.';\r\n\r\n return 'An error occurred while saving the current lsn. Please try again later.';\r\n }\r\n\r\n validatePostalCode(postalCode) {\r\n return false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport LabService from './lab-service';\r\nimport SecurityService from '../security/security-service';\r\n\r\n@inject(Router, PageContext, DialogPresenter, Logger, LabService, SecurityService)\r\nexport default class LabList {\r\n @observable filterText;\r\n\r\n isInternalView: boolean;\r\n labs: any;\r\n labsView: any;\r\n\r\n constructor(\r\n private router: Router,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private logger: Logger,\r\n private labService: LabService,\r\n private securityService: SecurityService\r\n ) {\r\n this.logger.name = 'lab-list';\r\n\r\n this.isInternalView = this.securityService.getCurrentSessionUser().isInternal && !this.securityService.isImpersonating();\r\n\r\n this.labService = labService;\r\n this.filterText = '';\r\n }\r\n\r\n navigateToLabDetail(id) {\r\n this.router.navigateToRoute('lab-detail', { id });\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateLabsView();\r\n }\r\n\r\n updateLabsView() {\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n if (this.labs) {\r\n this.labsView = this.labs.filter(l =>\r\n (l.externalId || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.address1 || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.address2 || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.city || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.state || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.postalCode || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (l.phoneNumber || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n }\r\n\r\n activate() {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var labs = await this.labService.getAdminLabs();\r\n\r\n this.pageContext.isLoading = false;\r\n\r\n this.labs = labs;\r\n this.updateLabsView();\r\n } catch (error) {\r\n this.logger.error('Error loading labs.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Labs',\r\n 'An error occurred while loading the labs. Please try again later.');\r\n }\r\n })();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { inject } from 'aurelia-framework';\r\nimport PageContext from './infrastructure/page-context';\r\n\r\n@inject(Element, PageContext)\r\nexport default class Layout {\r\n constructor(element, pageContext) {\r\n this.element = element;\r\n this.pageContext = pageContext;\r\n }\r\n\r\n attached() {\r\n this.$filterArea = $(this.element.querySelector('#offCanvasFiltering'));\r\n this.$filterArea.foundation();\r\n }\r\n\r\n detached() {\r\n this.$filterArea.foundation('destroy');\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SecurityService from '../security/security-service';\r\n\r\n@autoinject\r\nexport class Privacy {\r\n isUserLoggedIn: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n securityService: SecurityService\r\n ) {\r\n this.isUserLoggedIn = securityService.isCurrentUserLoggedIn();\r\n }\r\n\r\n goBack() {\r\n this.router.navigateBack();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SecurityService from '../security/security-service';\r\n\r\n@autoinject\r\nexport class Terms {\r\n isUserLoggedIn: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n securityService: SecurityService\r\n ) {\r\n this.isUserLoggedIn = securityService.isCurrentUserLoggedIn();\r\n }\r\n\r\n goBack() {\r\n this.router.navigateBack();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, BindingEngine } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport FormViewModel from 'infrastructure/contracts/form-view-model';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport Lab from 'labs/lab';\r\nimport LabService from 'labs/lab-service';\r\nimport CollectionType, { getCapPlanCollectionTypeOptions } from 'location-testing/collection-type';\r\nimport Organization from 'organizations/organization';\r\nimport OrganizationService from 'organizations/organization-service';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport operationsTimingOptions from '../operations-timing-options';\r\nimport CapPlanService from './cap-plan-service';\r\nimport CapPlanDetailRouteParams from './contracts/cap-plan-detail-route-params';\r\nimport FormSubmittedResult from './contracts/form-submitted-result';\r\nimport { UiCapPlan } from './ui-cap-plan';\r\n\r\n@autoinject\r\nexport class CapPlanDetail implements FormViewModel {\r\n //activation\r\n organizationOptions: Readonly;\r\n labOptions: Readonly;\r\n collectionTypeOptions: Readonly;\r\n operationsTimingOptions: Readonly;\r\n validateOnBind: boolean;\r\n form: UiCapPlan;\r\n\r\n //Subscriptions\r\n formLabIdSubscription: Subscription;\r\n\r\n //other\r\n validationController: ValidationController;\r\n tenantId: number;\r\n labExternalSource: string;\r\n formChanged: boolean;\r\n\r\n //permissions and auditing\r\n canEditCapPlans: boolean;\r\n canViewAudit: boolean;\r\n recordChanges: any;\r\n propertyDisplayNames: any;\r\n\r\n constructor(\r\n private bindingEngine: BindingEngine,\r\n private capPlanService: CapPlanService,\r\n private readonly dialogPresenter: DialogPresenter,\r\n private labService: LabService,\r\n private organizationService: OrganizationService,\r\n private pageContext: PageContext,\r\n private readonly router: Router,\r\n private securityService: SecurityService,\r\n validationControllerFactory: ValidationControllerFactory,\r\n ) {\r\n this.collectionTypeOptions = getCapPlanCollectionTypeOptions();\r\n this.operationsTimingOptions = operationsTimingOptions;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.canEditCapPlans =\r\n this.securityService.hasPermission('EditCapPlans') &&\r\n !this.securityService.isImpersonating();\r\n this.canViewAudit =\r\n this.securityService.isCurrentUserInternal() && this.securityService.isImpersonating();\r\n\r\n this.propertyDisplayNames = {\r\n TestMethods: 'Test Methods',\r\n SampleDescriptionsJson: 'Sample Descriptions',\r\n TestingDayCount: 'Testing Day Count',\r\n IsActive: 'Active',\r\n };\r\n }\r\n\r\n handleFormChange(): void {\r\n this.formChanged = true;\r\n }\r\n\r\n labIdChanged() {\r\n const selectedLab = this.labOptions.find(\r\n (x: SelectorOption) => x.value === this.form.labId,\r\n );\r\n this.labExternalSource = selectedLab?.group;\r\n }\r\n\r\n handleSampleDescriptionRemoved(event: CustomEvent) {\r\n const { detail: index }: { detail: number } = event;\r\n this.form.sampleDescriptions.splice(index, 1);\r\n }\r\n\r\n handleFormSubmitting() {\r\n this.pageContext.isLoading = true;\r\n }\r\n\r\n handleFormSubmitted(event: CustomEvent) {\r\n const { detail }: { detail: FormSubmittedResult } = event;\r\n this.pageContext.isLoading = false;\r\n if (!detail.succeeded) {\r\n const { message } = detail;\r\n this.dialogPresenter.showAlert('Error Saving CAP Plan', message);\r\n return;\r\n }\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('CAP plan saved successfully');\r\n this.router.navigateToRoute('cap-plan-list');\r\n }\r\n\r\n // LIFECYCLES\r\n async canActivate(params: CapPlanDetailRouteParams) {\r\n const { tenantId, id } = params;\r\n this.tenantId = tenantId;\r\n const [organizations, labs, capPlan] = await Promise.all([\r\n this.organizationService.getOrganizations(),\r\n this.labService.getLabs(),\r\n id ? this.capPlanService.getCapPlan(tenantId, id) : null,\r\n ]);\r\n\r\n this.organizationOptions = organizations.map((x: Organization) => ({\r\n title: x.name,\r\n value: x.id,\r\n }));\r\n this.labOptions = labs.map((x: Lab) => ({\r\n title: x.displayName,\r\n value: x.id,\r\n group: x.externalSource,\r\n }));\r\n this.collectionTypeOptions = getCapPlanCollectionTypeOptions();\r\n this.operationsTimingOptions = operationsTimingOptions;\r\n\r\n this.form = new UiCapPlan(this.tenantId);\r\n this.form.loadViewFrom(capPlan);\r\n }\r\n\r\n async bind(): Promise {\r\n this.formLabIdSubscription = this.bindingEngine\r\n .propertyObserver(this.form, 'labId')\r\n .subscribe(this.labIdChanged.bind(this));\r\n\r\n ValidationRules.customRule(\r\n 'collectionTypeRule',\r\n (v: CollectionType, uiCapPlan: UiCapPlan) =>\r\n (v && uiCapPlan.collectionType == CollectionType.Vector) ||\r\n uiCapPlan.collectionType === CollectionType.CorrectiveAction,\r\n '',\r\n );\r\n ValidationRules.ensure((uiCapPlan: UiCapPlan) => uiCapPlan.name)\r\n .required()\r\n .ensure((uiCapPlan: UiCapPlan) => uiCapPlan.organizationId)\r\n .satisfies((v) => v > 0)\r\n .ensure((uiCapPlan: UiCapPlan) => uiCapPlan.collectionType)\r\n .satisfiesRule('collectionTypeRule')\r\n .ensure((uiCapPlan: UiCapPlan) => uiCapPlan.testingDayCount)\r\n .satisfies((v) => v > 0)\r\n .ensure((uiCapPlan: UiCapPlan) => uiCapPlan.sampleDescriptions)\r\n .minItems(1)\r\n .ensure((uiCapPlan: UiCapPlan) => uiCapPlan.labId)\r\n .satisfies((id: number) => id > 0)\r\n .on(this.form);\r\n\r\n if (this.validateOnBind) {\r\n await this.validationController.validate();\r\n }\r\n }\r\n\r\n deactivate(): void {\r\n this.formLabIdSubscription?.dispose();\r\n }\r\n\r\n async loadRecordChanges() {\r\n try {\r\n this.pageContext.isLoading = true;\r\n this.recordChanges = await this.capPlanService.getCapPlanRecordChanges(\r\n this.tenantId,\r\n this.form.id,\r\n );\r\n } catch (error) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading CAP Plan Audit',\r\n 'An error occurred while loading the current CAP plan audit. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { Grid } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { expandRowAtIndex } from 'infrastructure/ag-grid/ag-onfirstdatarendered-handler';\r\nimport UserService from 'users/user-service';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport { getCapPlanGridOptions } from './cap-plan-grid';\r\nimport CapPlanService from './cap-plan-service';\r\nimport { CapPlanListItem } from './contracts/cap-plan-list-item.js';\r\nimport { UiCapPlanFilters } from './ui-cap-plan-filters';\r\n\r\n@autoinject\r\nexport class CapPlanList {\r\n @observable filterText: string;\r\n\r\n gridOptions: any;\r\n allSelected: boolean;\r\n capPlans: CapPlanListItem[];\r\n capPlanFilter: UiCapPlanFilters;\r\n\r\n applyFiltersSubscription: any;\r\n clearFiltersSubscription: any;\r\n canEditCapPlans: boolean;\r\n isGridRowSelected: boolean;\r\n selectedCapPlans: number[];\r\n currentUser: any;\r\n capPlanGrid: any;\r\n\r\n constructor(\r\n private capPlanService: CapPlanService,\r\n private dialogPresenter: DialogPresenter,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private router: Router,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n ) {\r\n this.capPlanService = capPlanService;\r\n this.dialogPresenter = dialogPresenter;\r\n this.eventAggregator = eventAggregator;\r\n this.logger = logger;\r\n this.pageContext = pageContext;\r\n this.router = router;\r\n this.securityService = securityService;\r\n this.userService = userService;\r\n\r\n this.capPlanFilter = new UiCapPlanFilters();\r\n this.selectedCapPlans = [];\r\n\r\n this.handleApplyFilters = this.handleApplyFilters.bind(this);\r\n this.handleClearFilters = this.handleClearFilters.bind(this);\r\n this.deleteSelectedCapPlans = this.deleteSelectedCapPlans.bind(this);\r\n this.canEditCapPlans =\r\n this.securityService.hasPermission('EditCapPlans') &&\r\n !this.securityService.isImpersonating();\r\n }\r\n\r\n filterTextChanged(newValue: string) {\r\n this.gridOptions.api.setQuickFilter(newValue);\r\n }\r\n\r\n async handleApplyFilters() {\r\n this.capPlanFilter.apply();\r\n await this.loadCapPlans();\r\n }\r\n\r\n async handleClearFilters() {\r\n this.capPlanFilter.clear();\r\n await this.loadCapPlans();\r\n }\r\n\r\n handleAGGridSelectionChanged(event: any) {\r\n const selectedNodes = event.api.getSelectedNodes();\r\n this.isGridRowSelected = selectedNodes.length > 0;\r\n }\r\n\r\n async loadCapPlans() {\r\n const capPlans = await this.capPlanService.getCapPlans(this.capPlanFilter.toModel());\r\n this.capPlans = capPlans;\r\n this.gridOptions?.api.setRowData(this.capPlans);\r\n }\r\n\r\n navigateToCapPlanDetail(tenantId: number, id: number) {\r\n this.router.navigateToRoute('cap-plan-detail', { tenantId, id });\r\n }\r\n\r\n navigateToCapPlanCreate() {\r\n this.router.navigateToRoute('cap-plan-detail', {\r\n tenantId: this.currentUser.organizationId,\r\n });\r\n }\r\n\r\n async deleteSelectedCapPlans() {\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Delete CAP Plans',\r\n 'Are you sure you want to delete these CAP plans?',\r\n );\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n const ids = this.gridOptions.api.getSelectedNodes().map((rowNode) => rowNode.data.id);\r\n try {\r\n await this.capPlanService.bulkDeleteCapPlans(ids);\r\n\r\n const updatedCapPlanList = this.capPlans.filter(({ id }) => !ids.includes(id));\r\n this.capPlans = updatedCapPlanList;\r\n this.gridOptions.api.setRowData(this.capPlans);\r\n\r\n this.pageContext.showSuccessOverlay('Selected CAP plans deleted successfully.');\r\n } catch (error) {\r\n this.logger.error('Error deleting CAP plans', error, { ids });\r\n this.dialogPresenter.showAlert(\r\n 'Error Deleting CAP Plans',\r\n 'An error occured while deleting the CAP plans. Please try again later.',\r\n );\r\n }\r\n }\r\n\r\n async canActivate() {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.apply',\r\n this.handleApplyFilters,\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.clear',\r\n this.handleClearFilters,\r\n );\r\n try {\r\n const [currentUser, organizations, testMethods] = await Promise.all([\r\n this.securityService.getEffectiveUser(),\r\n this.userService.getCurrentUserOrganizations(),\r\n this.capPlanService.getTestMethods(),\r\n ]);\r\n\r\n this.currentUser = currentUser;\r\n this.capPlanFilter.organizations = organizations;\r\n this.capPlanFilter.testMethods = testMethods;\r\n await this.loadCapPlans();\r\n } catch (error) {\r\n this.logger.error('Error loading CAP Plans.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading CAP Plans',\r\n 'An error occured while loading the CAP plans. Please try again later.',\r\n );\r\n }\r\n }\r\n\r\n bind() {\r\n this.gridOptions = getCapPlanGridOptions();\r\n this.gridOptions.rowData = this.capPlans;\r\n this.gridOptions.onSelectionChanged = this.handleAGGridSelectionChanged.bind(this);\r\n this.gridOptions.onFirstDataRendered = (params: any) => expandRowAtIndex(params, 1);\r\n new Grid(this.capPlanGrid, this.gridOptions);\r\n }\r\n\r\n deactivate() {\r\n this.applyFiltersSubscription && this.applyFiltersSubscription.dispose();\r\n this.clearFiltersSubscription && this.clearFiltersSubscription.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\r\nimport { RemediationUserType } from 'location-testing/remediations/remediation-user-type';\r\nimport RemedationUsers from 'location-testing/remediations/remediation-users';\r\nimport DialogPresenter from '../../../infrastructure/dialogs/dialog-presenter';\r\n\r\n@autoinject\r\nexport class AutoRemediationCustomElement implements RemedationUsers {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) autoRemediation: boolean;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) deactivateRoutineTaskGeneration: boolean;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) assignedUserId?: number;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) approvalUserId?: number;\r\n @bindable editable: boolean;\r\n @bindable assignedUserFullName?: string;\r\n @bindable approvalUserFullName?: string;\r\n\r\n constructor(\r\n private dialogPresenter: DialogPresenter,\r\n private readonly validationController: ValidationController,\r\n ) {}\r\n\r\n async selectUser(remdiationUserType: RemediationUserType): Promise {\r\n const result = await this.dialogPresenter.showUserSelector('Select a user');\r\n if (result.wasCancelled) return;\r\n\r\n const user = result.output;\r\n if (!user) return;\r\n\r\n switch (remdiationUserType) {\r\n case RemediationUserType.Assigned:\r\n this.assignedUserId = user.id;\r\n this.assignedUserFullName = this.toUserFullName(user);\r\n break;\r\n case RemediationUserType.Approval:\r\n this.approvalUserId = user.id;\r\n this.approvalUserFullName = this.toUserFullName(user);\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n async autoRemediationChanged(oldValue: boolean, newValue: boolean) {\r\n if (typeof newValue === 'undefined') {\r\n return;\r\n }\r\n\r\n // let the users bail out if they accidently click off auto-remediation\r\n if (!oldValue && (this.assignedUserId || this.approvalUserId)) {\r\n const confirmed = await this.dialogPresenter.showConfirmation(\r\n 'Remove Auto Remediation Users',\r\n 'Confirm you wish to remove auto remediation users from this cap plan.',\r\n 'Confirm',\r\n );\r\n if (confirmed) {\r\n this.assignedUserId = null;\r\n this.approvalUserId = null;\r\n this.assignedUserFullName = null;\r\n this.approvalUserFullName = null;\r\n this.deactivateRoutineTaskGeneration = false;\r\n\r\n return;\r\n }\r\n\r\n this.autoRemediation = true;\r\n return;\r\n }\r\n\r\n this.deactivateRoutineTaskGeneration = false;\r\n }\r\n\r\n private toUserFullName(user: any): string {\r\n return user.firstName + ' ' + user.lastName;\r\n }\r\n\r\n bind() {\r\n ValidationRules.customRule(\r\n 'autoRemediationRule',\r\n (v: boolean, model: this) => !v || (v && model.autoRemediation),\r\n '',\r\n );\r\n ValidationRules.ensure((model: this) => model.deactivateRoutineTaskGeneration)\r\n .satisfiesRule('autoRemediationRule')\r\n .ensure((model: this) => model.assignedUserId)\r\n .required()\r\n .when((model: this) => model.autoRemediation)\r\n .ensure((model: this) => model.approvalUserId)\r\n .required()\r\n .when((model: this) => model.autoRemediation)\r\n .ensure((model: this) => model.approvalUserId)\r\n .satisfies((v: number, model: this) => {\r\n return (\r\n (!v && !model.assignedUserId) ||\r\n (v && model.assignedUserId && v !== model.assignedUserId)\r\n );\r\n })\r\n .on(this);\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport OrganizationPlan from 'location-testing/plans/organization-plan';\r\nimport PlanService from 'location-testing/plans/plan-service';\r\n\r\n@autoinject\r\nexport class PlanSelectorCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) planId: number;\r\n @bindable organizationId: number;\r\n planOptions: SelectorOption[];\r\n\r\n constructor(private readonly planService: PlanService) {}\r\n\r\n private async getOrganizationPlans() {\r\n const organizationPlans = await this.planService.getOrganizationPlans(this.organizationId);\r\n this.planOptions = organizationPlans.map((op: OrganizationPlan) => {\r\n return {\r\n title: op.planName,\r\n value: op.planId,\r\n } as SelectorOption;\r\n });\r\n }\r\n\r\n async organizationIdChanged() {\r\n await this.getOrganizationPlans();\r\n }\r\n\r\n async bind() {\r\n await this.getOrganizationPlans();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport PointRoomService from '../../point-rooms/point-room-service';\r\n\r\n@autoinject\r\nexport class PointRoomSelectorCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) room: string;\r\n @bindable organizationId: number;\r\n roomTypeOptions: SelectorOption[];\r\n\r\n constructor(private readonly pointRoomService: PointRoomService) {}\r\n\r\n private async getOrganizationPointTypes() {\r\n const organizationPointTypes = await this.pointRoomService.getOrganizationPointRooms(\r\n this.organizationId,\r\n );\r\n this.roomTypeOptions = organizationPointTypes.map((pt: any) => {\r\n return {\r\n title: pt,\r\n value: pt,\r\n } as SelectorOption;\r\n });\r\n }\r\n\r\n async organizationIdChanged() {\r\n await this.getOrganizationPointTypes();\r\n }\r\n\r\n async bind() {\r\n await this.getOrganizationPointTypes();\r\n }\r\n}\r\n","module.exports = \"\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport PointTypeService from '../../point-types/point-type-service';\r\n\r\n@autoinject\r\nexport class PointTypeSelectorCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) pointType: string;\r\n @bindable organizationId: number;\r\n pointTypeOptions: SelectorOption[];\r\n\r\n constructor(private readonly pointTypeService: PointTypeService) {}\r\n\r\n private async getOrganizationPointTypes() {\r\n const organizationPointTypes = await this.pointTypeService.getOrganizationPointTypes(\r\n this.organizationId,\r\n );\r\n this.pointTypeOptions = organizationPointTypes.map((pt: any) => {\r\n return {\r\n title: pt,\r\n value: pt,\r\n } as SelectorOption;\r\n });\r\n }\r\n\r\n async organizationIdChanged() {\r\n await this.getOrganizationPointTypes();\r\n }\r\n\r\n async bind() {\r\n await this.getOrganizationPointTypes();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport TestMethod from 'test-methods/test-method';\r\nimport CapPlanService from '../cap-plan-service';\r\nimport { RelatedCapPlan } from '../contracts/related-cap-plan';\r\n\r\n@autoinject\r\nexport class RelatedCapPlansCustomElement {\r\n @bindable capPlanId?: number;\r\n @bindable organizationId: number;\r\n @bindable testMethods: TestMethod[];\r\n relatedCapPlans: RelatedCapPlan[];\r\n\r\n constructor(private readonly capPlanService: CapPlanService) {\r\n this.testMethods = [];\r\n this.relatedCapPlans = [];\r\n }\r\n\r\n private async getRelatedCapPlans() {\r\n if (this.testMethods.length === 0) {\r\n return;\r\n }\r\n\r\n this.relatedCapPlans = await this.capPlanService.getRelatedCapPlans(\r\n this.organizationId,\r\n this.testMethods.map((tm: TestMethod) => tm.id),\r\n this.capPlanId || 0,\r\n );\r\n }\r\n\r\n async testMethodsChanged() {\r\n await this.getRelatedCapPlans();\r\n }\r\n\r\n async bind() {\r\n await this.getRelatedCapPlans();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\r\n\r\n@autoinject\r\nexport class SampleDescriptionCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) description: string;\r\n @bindable editable: boolean;\r\n @bindable index: number;\r\n\r\n constructor(\r\n private element: Element,\r\n private readonly validationController: ValidationController,\r\n ) {}\r\n\r\n removeSampleDescription(index: number) {\r\n const event = new CustomEvent('sample-description-removed', {\r\n bubbles: true,\r\n detail: index,\r\n });\r\n\r\n this.element.dispatchEvent(event);\r\n }\r\n\r\n bind() {\r\n ValidationRules.ensure((m: this) => m.description)\r\n .required()\r\n .on(this);\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationController } from 'aurelia-validation';\r\nimport ValidationErrorFormatter from 'infrastructure/validation/validation-error-formatter';\r\nimport Logger from '../../../infrastructure/logger';\r\nimport CapPlanService from '../cap-plan-service';\r\nimport FormSubmittedResult from '../contracts/form-submitted-result';\r\nimport { UiCapPlan } from '../ui-cap-plan';\r\n\r\n@autoinject\r\nexport class SubmitButtonsCustomElement {\r\n @bindable form: UiCapPlan;\r\n @bindable editable: boolean;\r\n\r\n constructor(\r\n private readonly capPlanService: CapPlanService,\r\n private element: Element,\r\n private readonly logger: Logger,\r\n private readonly router: Router,\r\n private readonly validationController: ValidationController,\r\n ) {}\r\n\r\n async save() {\r\n const { valid } = await this.validationController.validate();\r\n if (!valid) {\r\n return;\r\n }\r\n\r\n const submittingEvent = new CustomEvent('form-submitting', { bubbles: true });\r\n const formSubmittedResult: FormSubmittedResult = { succeeded: false };\r\n const submittedEvent = new CustomEvent('form-submitted', {\r\n bubbles: true,\r\n detail: formSubmittedResult,\r\n });\r\n this.element.dispatchEvent(submittingEvent);\r\n\r\n try {\r\n let capPlan = this.form.toEntity();\r\n if (capPlan.id === 0) {\r\n const { id } = await this.capPlanService.createCapPlan(\r\n capPlan.organizationId,\r\n capPlan,\r\n );\r\n capPlan.id = id;\r\n } else {\r\n capPlan = await this.capPlanService.updateCapPlan(capPlan.organizationId, capPlan);\r\n }\r\n\r\n formSubmittedResult.succeeded = true;\r\n formSubmittedResult.tenantId = capPlan.organizationId;\r\n formSubmittedResult.entityId = capPlan.id;\r\n } catch (error) {\r\n this.logger.error('Error saving CAP Plan.', error);\r\n formSubmittedResult.message = ValidationErrorFormatter.format(\r\n 'An error occured. Please try again later.',\r\n error,\r\n );\r\n }\r\n\r\n this.element.dispatchEvent(submittedEvent);\r\n }\r\n\r\n cancel() {\r\n this.router.navigateToRoute('cap-plan-list');\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, bindingMode } from 'aurelia-framework';\r\nimport { ValidationController, ValidationRules } from 'aurelia-validation';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport TestMethod from 'test-methods/test-method';\r\nimport TestMethodService from '../../../test-methods/test-method-service';\r\nimport SecurityService from 'security/security-service';\r\nimport { testMethodNameFormatting } from 'test-methods/test-method-helper';\r\n\r\n@autoinject\r\nexport class TestMethodsSelectorCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) testMethods: TestMethod[];\r\n @bindable labId: number;\r\n @bindable organizationId: number;\r\n @bindable labExternalSource: string;\r\n @bindable editable: number;\r\n testMethodOptions: SelectorOption[];\r\n\r\n constructor(\r\n private readonly testMethodService: TestMethodService,\r\n private readonly securityService: SecurityService,\r\n private readonly validationController: ValidationController,\r\n ) {\r\n this.labId = 0;\r\n }\r\n\r\n private async getTestMethods() {\r\n if (this.labId === 0) {\r\n return;\r\n }\r\n\r\n const testMethods = await this.testMethodService.getTestMethods(this.organizationId, {\r\n externalSource: this.labExternalSource,\r\n });\r\n\r\n this.testMethodOptions = testMethods.map((tm) => {\r\n tm.title = testMethodNameFormatting(\r\n tm,\r\n this.securityService.isImpersonating(),\r\n this.securityService.isWorkingUnderOrganization(),\r\n );\r\n return tm;\r\n });\r\n }\r\n\r\n async labIdChanged() {\r\n await this.getTestMethods();\r\n }\r\n\r\n async bind() {\r\n await this.getTestMethods();\r\n ValidationRules.ensure((m: this) => m.testMethods)\r\n .minItems(1)\r\n .on(this);\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","module.exports = \"\\r\\n\";","import { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { ValidationControllerFactory, validateTrigger, ValidationRules } from 'aurelia-validation';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport UserService from '../../users/user-service';\r\nimport CustomerTestImportService from './customer-test-import-service';\r\n\r\n@inject(Router, ValidationControllerFactory, Logger, PageContext, DialogPresenter, UserService, CustomerTestImportService)\r\nexport class CustomerTestImportDetail {\r\n @observable testDataFile;\r\n organizationId = null;\r\n\r\n constructor(router, validationControllerFactory, logger, pageContext, dialogPresenter, userService, customerTestImportService) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'customer-test-import-detail';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.userService = userService;\r\n this.customerTestImportService = customerTestImportService;\r\n this.acceptFormats = [\r\n '.csv',\r\n '.txt',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n 'application/vnd.ms-excel',\r\n 'text/csv',\r\n 'text/plain'\r\n ];\r\n\r\n // User authorization is performed at the router since this page is used only for creating and not viewing imports.\r\n }\r\n\r\n activate() {\r\n ValidationRules\r\n .ensure('organizationId').displayName('Organization').required()\r\n .ensure('testDataFile').displayName('Test Data File').satisfies(testDataFile => !!testDataFile)\r\n .on(this);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.currentUserOrganizations = await this.userService.getCurrentUserOrganizations();\r\n } catch (error) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Organizations',\r\n 'There was an error loading the organization list. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n testDataFileChanged() {\r\n if (!this.testDataFileInput.files || !this.testDataFileInput.files.length)\r\n return;\r\n\r\n var file = this.testDataFileInput.files[0];\r\n if (!this.acceptFormats.some(format => file.type === format)) {\r\n this.dialogPresenter.showAlert(\r\n 'Unsupported File Format',\r\n `The following are supported file formats: .csv, .txt`);\r\n\r\n this.testDataFileInput.value = '';\r\n }\r\n } \r\n\r\n async saveCustomerTestImport() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n await this.customerTestImportService.saveCustomerTestImport({ organizationId: this.organizationId }, this.testDataFileInput.files[0]);\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Test data file uploaded successfully.');\r\n this.router.navigateToRoute('customer-test-import-list');\r\n } catch (error) {\r\n this.logger.error('Error uploading test data file.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Test Data File',\r\n 'There was an error uploading the test data file. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('customer-test-import-list');\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import moment from 'moment';\r\nimport { inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { createDateRangeFilterOptions } from '../../infrastructure/components/filters/date-range-filter';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport UserService from '../../users/user-service';\r\nimport CustomerTestImportService from './customer-test-import-service';\r\n\r\n@inject(Router, EventAggregator, Logger, PageContext, DialogPresenter, UserService, CustomerTestImportService)\r\nexport default class CustomerTestImportList {\r\n @observable filterText;\r\n\r\n constructor(router, eventAggregator, logger, pageContext, dialogPresenter, userService, customerTestImportService) {\r\n this.router = router;\r\n this.eventAggregator = eventAggregator;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'customer-test-import-list';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.userService = userService;\r\n this.customerTestImportService = customerTestImportService;\r\n this.filterText = '';\r\n this.gridOptions = {\r\n columnDefs: [\r\n { suppressMenu: true, headerName: 'Uploaded', field: 'uploadDateTime', width: 150, sort: 'desc', template: '
${data.uploadDateTime | dateFormat}
' },\r\n { suppressMenu: true, headerName: 'Processed', field: 'processedDateTime', width: 150, template: '
${data.processedDateTime | dateFormat}
' },\r\n { suppressMenu: true, headerName: 'Organization', field: 'organizationName', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n { suppressMenu: true, headerName: 'File Name', field: 'originalFileName', comparator: CompareUtility.compareStringsInsensitive, width: 150 },\r\n { suppressMenu: true, headerName: 'Imported Records', field: 'successfulRecordCount' },\r\n { suppressMenu: true, headerName: 'Failed Records', field: 'failedRecordCount' },\r\n { suppressMenu: true, headerName: 'Total Records', field: 'totalRecordCount' },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Error Logs',\r\n cellClass: 'row-actions actions-persistent',\r\n field: 'logFileUrl',\r\n width: 150,\r\n template: 'Download',\r\n sortable: false,\r\n suppressSizeToFit: true\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n // Filters\r\n this.selectedOrganizations = [];\r\n this.uploadDateRangeOptions = createDateRangeFilterOptions();\r\n this.defaultUploadDateRangeOption = 'last30Days';\r\n this.selectedUploadDateRangeOption = this.uploadDateRangeOptions.find(o => o.value === this.defaultUploadDateRangeOption);\r\n\r\n this.handleApplyFilters = this.handleApplyFilters.bind(this);\r\n }\r\n\r\n handleApplyFilters() {\r\n this.loadCustomerTestImports();\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateCustomerTestImportsView();\r\n }\r\n\r\n updateCustomerTestImportsView() {\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n if (this.customerTestImports) {\r\n this.customerTestImportsView = this.customerTestImports.filter(n =>\r\n (n.organizationName || '').toLowerCase().indexOf(lowerCasedFilterText) > -1\r\n );\r\n }\r\n }\r\n\r\n async loadCustomerTestImports() {\r\n this.customerTestImports = await this.customerTestImportService.getCustomerTestImports({\r\n organizationIds: this.selectedOrganizations.map(o => o.id),\r\n uploadStartDate: this.selectedUploadDateRangeOption.startDate ?\r\n moment(this.selectedUploadDateRangeOption.startDate).startOf('day').utc().format() :\r\n null,\r\n uploadEndDate: this.selectedUploadDateRangeOption.endDate ?\r\n moment(this.selectedUploadDateRangeOption.endDate).startOf('day').add(1, 'days').utc().format() :\r\n null\r\n });\r\n\r\n for (let customerTestImport of this.customerTestImports) {\r\n if (!customerTestImport.uploadDateTime.endsWith('Z') && !customerTestImport.uploadDateTime.endsWith('z'))\r\n customerTestImport.uploadDateTime += 'Z';\r\n\r\n if (customerTestImport.processedDateTime) {\r\n customerTestImport.totalRecordCount = customerTestImport.successfulRecordCount + customerTestImport.failedRecordCount;\r\n\r\n if (!customerTestImport.processedDateTime.endsWith('Z') && !customerTestImport.processedDateTime.endsWith('z'))\r\n customerTestImport.processedDateTime += 'Z';\r\n }\r\n }\r\n\r\n this.updateCustomerTestImportsView();\r\n }\r\n\r\n activate() {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe('filters.apply', this.handleApplyFilters);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var results = await Promise.all([\r\n this.userService.getCurrentUserOrganizations(),\r\n this.loadCustomerTestImports()\r\n ]);\r\n\r\n this.currentUserOrganizations = results[0];\r\n } catch (error) {\r\n this.logger.error('Error loading customer test imports.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Customer Test Imports',\r\n 'An error occurred while loading the customer test imports. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n deactivate() {\r\n this.applyFiltersSubscription && this.applyFiltersSubscription.dispose();\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { inject, bindable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport NavigationAuthorizer from '../security/navigation/navigation-authorizer';\r\n\r\n@inject(Router, NavigationAuthorizer)\r\nexport class LocationTestingNavigationMenu {\r\n @bindable colSize;\r\n @bindable mapId;\r\n\r\n constructor(router, navigationAuthorizer) {\r\n this.router = router;\r\n this.navigationAuthorizer = navigationAuthorizer;\r\n }\r\n\r\n async mapIdChanged() {\r\n if (!this.mapId)\r\n return;\r\n\r\n let navItems = [];\r\n\r\n for (let route of this.router.routes)\r\n if (route.navModel.config.group === 'location-testing' && await this.navigationAuthorizer.hasAccess(route.navModel.config))\r\n navItems.push({\r\n href: route.name === 'map-dashboard' ?\r\n this.router.generate(route.name, { id: this.mapId }) :\r\n this.router.generate(route.name, { mapId: this.mapId }),\r\n title: route.title,\r\n icon: route.icon,\r\n get isActive() {\r\n return this.href === window.location.hash.substring(1);\r\n }\r\n });\r\n\r\n this.navItems = navItems;\r\n }\r\n};\r\n","module.exports = \"\\r\\n\";","import { GridOptions, SelectionChangedEvent } from 'ag-grid-community';\r\nimport { Grid } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { BindingEngine, inject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport CollectionType from 'location-testing/collection-type';\r\nimport { getTestMethodGroups } from 'location-testing/test-method-group';\r\nimport RecordStatus, { getRecordStatusOptions } from 'record-status';\r\nimport RemediationRootCause from 'remediation-root-causes/remediation-root-cause';\r\nimport RemediationRootCauseService from 'remediation-root-causes/remediation-root-cause-service';\r\nimport svgPanZoom from 'svg-pan-zoom';\r\nimport RequestService from 'tests/test-service';\r\nimport debounce from '../../infrastructure/debounce';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport PlanService from '../plans/plan-service';\r\nimport PointTypeService from '../point-types/point-type-service';\r\nimport Point from '../points/point';\r\nimport PointService from '../points/point-service';\r\nimport RemediationService from '../remediations/remediation-service';\r\nimport { pointPlanGrid } from './grids/point-plan-grid';\r\nimport { pointRemediationGrid } from './grids/point-remediation-grid';\r\nimport { PointTestResult } from './grids/point-test-result';\r\nimport { pointTestResultGrid } from './grids/point-test-result-grid';\r\nimport { MapDashboardQuery, MapDashboardQueryFilters } from './map-dashboard-query-filters';\r\nimport MapDashboardSelectionMode from './map-dashboard-selection-mode';\r\nimport MapDashboardViewOption from './map-dashboard-view-option';\r\nimport MapService from './map-service';\r\nimport { createPlaybackFrames } from './playback/playback-utility';\r\n\r\n@inject(\r\n Router,\r\n EventAggregator,\r\n Logger,\r\n PageContext,\r\n DialogPresenter,\r\n SecurityService,\r\n MapService,\r\n PointService,\r\n PointTypeService,\r\n PlanService,\r\n RemediationService,\r\n BindingEngine,\r\n RequestService,\r\n RemediationRootCauseService,\r\n)\r\nexport class MapDashboard {\r\n @observable pointFilterText;\r\n @observable view;\r\n @observable selectedViewOption: MapDashboardViewOption;\r\n @observable showLatestView: boolean;\r\n @observable viewPointSize;\r\n\r\n applyFiltersSubscription: any;\r\n clearFiltersSubscription: any;\r\n loadPromise: any;\r\n\r\n // elements\r\n panZoom: any;\r\n mapContainer: any;\r\n pan: any;\r\n pointDataDropdownViewModel: any;\r\n mapSvgElement: SVGSVGElement;\r\n\r\n draggingKeyPoint: Point;\r\n draggingKeyStartingPoint: any;\r\n draggingPointsMoved: boolean;\r\n selectionRubberband: any;\r\n pointMouseDownStartingPoint: any;\r\n innerPointViewSize: number;\r\n\r\n // configuration\r\n scale: number;\r\n\r\n sidebarView: string;\r\n currentSidebarDetailView: string;\r\n pointsView: any;\r\n panZoomSettings: any;\r\n\r\n // grids\r\n pointTestResultGrid: any;\r\n pointTestResultGridOptions: GridOptions;\r\n pointTestResultIsSelected: boolean;\r\n pointPlanGrid: any;\r\n pointPlanGridOptions: GridOptions;\r\n pointRemediationGrid: any;\r\n pointRemediationGridOptions: GridOptions;\r\n pointSelectionMode: MapDashboardSelectionMode;\r\n\r\n // permissions\r\n canViewResults: boolean;\r\n canViewPlans: boolean;\r\n canViewAllRedmediations: boolean;\r\n canEditRemediations: boolean;\r\n canViewAllTasks: boolean;\r\n canEditTasks: boolean;\r\n\r\n // state\r\n mapId: number;\r\n allFailedPointTestsSelected: boolean;\r\n @observable showFailedOnly: boolean;\r\n\r\n sidebarDetailViews: any[];\r\n\r\n selectedFailedPointTests: any[];\r\n selectedPoint: any;\r\n recordStatusOptions: SelectorOption[];\r\n confirmationTestValueOptions: SelectorOption[];\r\n confirmationTestValueOptionsSubscription: Subscription;\r\n\r\n // state - playback\r\n playbackFrames: any[];\r\n currentPlaybackFrame: number;\r\n isPlaying: boolean;\r\n playInterval: any;\r\n\r\n // state - point data\r\n pointTestResults: PointTestResult[];\r\n pointPlans: any[];\r\n pointRemediations: any[];\r\n failedPointTests: any[];\r\n pointHasOverdueTasks: boolean;\r\n pointTestMetrics: any;\r\n\r\n //Filters\r\n mapDashboardQueryFilters: MapDashboardQueryFilters;\r\n pointRoomOptions: SelectorOption[];\r\n pointZoneOptions: SelectorOption[];\r\n pointTypeOptions: SelectorOption[];\r\n testMethodOptions: SelectorOption[];\r\n taskAssigneeOptions: SelectorOption[];\r\n planOptions: SelectorOption[];\r\n remediationRootCauseOptions: SelectorOption[];\r\n testMethodGroupOptions: SelectorOption[];\r\n\r\n results: any;\r\n map: any;\r\n points: Point[];\r\n roomName: any;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private mapService: MapService,\r\n private pointService: PointService,\r\n private pointTypeService: PointTypeService,\r\n private planService: PlanService,\r\n private remediationService: RemediationService,\r\n private readonly bindingEngine: BindingEngine,\r\n private readonly testService: RequestService,\r\n private readonly remediationRootCauseService: RemediationRootCauseService,\r\n ) {\r\n this.router = router;\r\n this.eventAggregator = eventAggregator;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'map-dashboard';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.mapService = mapService;\r\n this.pointService = pointService;\r\n this.pointTypeService = pointTypeService;\r\n this.planService = planService;\r\n this.remediationService = remediationService;\r\n this.remediationRootCauseService = remediationRootCauseService;\r\n this.testMethodGroupOptions = getTestMethodGroups();\r\n\r\n this.scale = 1;\r\n this.pointZoneOptions = [\r\n { value: 1, title: 'Zone 1' },\r\n { value: 2, title: 'Zone 2' },\r\n { value: 3, title: 'Zone 3' },\r\n { value: 4, title: 'Zone 4' },\r\n ];\r\n\r\n // Initialize dashboard settings.\r\n var defaultSettings = {\r\n showLatestView: true,\r\n viewPointSize: 5,\r\n };\r\n var settings = Object.assign(defaultSettings, this.mapService.getDashboardSettings());\r\n this.panZoomSettings = settings.panZoom || {};\r\n this.showLatestView = settings.showLatestView;\r\n this.viewPointSize = settings.viewPointSize;\r\n this.innerPointViewSize = this.viewPointSize - 1;\r\n\r\n this.pointFilterText = '';\r\n this.showFailedOnly = false;\r\n\r\n // Debounce the saving of pan zoom settings.\r\n this.savePanZoomSettings = debounce(this.savePanZoomSettings.bind(this), 500);\r\n\r\n this.canViewResults = this.securityService.hasPermission('ViewResults');\r\n this.canViewPlans = this.securityService.hasPermission('ViewPlans');\r\n this.canViewAllRedmediations = this.securityService.hasPermission('ViewAllRemediations');\r\n this.canEditRemediations =\r\n this.securityService.hasPermission('EditRemediations') &&\r\n !this.securityService.isImpersonating();\r\n this.canViewAllTasks = this.securityService.hasPermission('ViewAllTasks');\r\n this.canEditTasks =\r\n this.securityService.hasPermission('EditTasks') &&\r\n !this.securityService.isImpersonating();\r\n\r\n this.view = null;\r\n this.pointSelectionMode = MapDashboardSelectionMode.SINGLE;\r\n this.selectedViewOption = MapDashboardViewOption.ALL;\r\n\r\n this.sidebarView = 'list';\r\n this.sidebarDetailViews = [];\r\n\r\n if (this.canViewResults) this.sidebarDetailViews.push({ name: 'tests', title: 'Tests' });\r\n\r\n if (this.canViewPlans) this.sidebarDetailViews.push({ name: 'plans', title: 'Plans' });\r\n\r\n if (this.canViewAllRedmediations)\r\n this.sidebarDetailViews.push({\r\n name: 'remediations',\r\n title: 'Remediations',\r\n });\r\n\r\n if (this.sidebarDetailViews.length)\r\n this.currentSidebarDetailView = this.sidebarDetailViews[0].name;\r\n\r\n this.playbackFrames = [];\r\n this.currentPlaybackFrame = 0;\r\n this.isPlaying = false;\r\n\r\n this.mapDashboardQueryFilters = new MapDashboardQueryFilters();\r\n\r\n this.pointMouseDown = this.pointMouseDown.bind(this);\r\n this.pointMouseMove = this.pointMouseMove.bind(this);\r\n this.pointMouseUp = this.pointMouseUp.bind(this);\r\n this.pointHover = this.pointHover.bind(this);\r\n this.pointHoverEnd = this.pointHoverEnd.bind(this);\r\n }\r\n\r\n setView(view) {\r\n // If switching out of playback mode, ensure playback is stopped.\r\n if (this.view === 'playback') this.stopPlayback();\r\n\r\n if (\r\n view === 'playback' &&\r\n (!this.mapDashboardQueryFilters.dateRangeQueryFilters.dateRangeFilterOption.startDate ||\r\n !this.mapDashboardQueryFilters.dateRangeQueryFilters.dateRangeFilterOption.endDate)\r\n ) {\r\n this.dialogPresenter.showAlert(\r\n 'Bounded Date Range Required',\r\n 'A start and end date must be specified for the collection date before switching to playback mode. Please open the filters pane and ensure both start and end dates are specified.',\r\n );\r\n return;\r\n }\r\n\r\n if (this.view === 'points') {\r\n this.points.forEach((p) => {\r\n p.isSelected = false;\r\n p.isHovered = false;\r\n });\r\n\r\n this.mapSvgElement.removeEventListener('mousedown', this.pointMouseDown);\r\n this.mapSvgElement.removeEventListener('mousemove', this.pointMouseMove);\r\n this.mapSvgElement.removeEventListener('mouseup', this.pointMouseUp);\r\n\r\n this.reloadData();\r\n this.panZoom.enableDblClickZoom();\r\n }\r\n\r\n if (view === 'points') {\r\n this.mapSvgElement.addEventListener('mousedown', this.pointMouseDown);\r\n this.mapSvgElement.addEventListener('mousemove', this.pointMouseMove);\r\n this.mapSvgElement.addEventListener('mouseup', this.pointMouseUp);\r\n\r\n this.panZoom.disableDblClickZoom();\r\n }\r\n\r\n this.view = view;\r\n }\r\n\r\n viewChanged() {\r\n if (this.view === 'playback') this.loadPlaybackData();\r\n\r\n this.pointSelectionMode =\r\n this.view === 'points'\r\n ? MapDashboardSelectionMode.MULTI\r\n : MapDashboardSelectionMode.SINGLE;\r\n }\r\n\r\n async handleManipulatePointsCancel() {\r\n this.setView(null);\r\n\r\n // force a reload of the points\r\n await this.loadPointData();\r\n }\r\n\r\n async handleManipulatePointsSave() {\r\n let originalPoints = await this.pointService.getPoints({\r\n mapIds: [this.map.id],\r\n });\r\n\r\n let dirtyPoints = [] as Point[];\r\n this.points.forEach((p) => {\r\n let originalPoint = originalPoints.find((op) => op.id === p.id) as Point;\r\n if (originalPoint.x !== p.x || originalPoint.y !== p.y) dirtyPoints.push(p);\r\n });\r\n\r\n try {\r\n await this.mapService.updateMapPoints(this.map.id, dirtyPoints);\r\n\r\n this.pageContext.showSuccessOverlay('Points updated successfully.');\r\n } catch (error) {\r\n this.logger.error('Error updating map point locations', error, {\r\n mapId: this.mapId,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Updating Point Locations',\r\n \"An error occurred while updating the current map's point locations. Please try again later.\", // eslint-disable-line\r\n );\r\n }\r\n\r\n this.setView(null);\r\n }\r\n\r\n async testMethodGroupChanged(newValue: string, oldValue: string) {\r\n if (!newValue || newValue === oldValue) {\r\n return;\r\n }\r\n\r\n const confirmationTestValues = await this.testService.fetchConfirmationTestResultValues(\r\n this.mapId,\r\n this.mapDashboardQueryFilters.confirmationTestingQueryFilters.testMethodGroup,\r\n );\r\n this.confirmationTestValueOptions = confirmationTestValues.map((v: string) => {\r\n return {\r\n value: v,\r\n title: v,\r\n } as SelectorOption;\r\n });\r\n }\r\n\r\n async loadPlaybackData() {\r\n this.currentPlaybackFrame = 0;\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var dailyResults = await this.mapService.getDailyResults(\r\n this.mapId,\r\n this.mapDashboardQueryFilters.getQueryParams(),\r\n );\r\n\r\n this.playbackFrames = createPlaybackFrames(\r\n this.mapDashboardQueryFilters.dateRangeQueryFilters.dateRangeFilterOption.startDate,\r\n this.mapDashboardQueryFilters.dateRangeQueryFilters.dateRangeFilterOption.endDate,\r\n dailyResults,\r\n );\r\n } catch (error) {\r\n this.logger.error('Error loading map dashboard daily results', error, {\r\n mapId: this.mapId,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map Daily Results',\r\n \"An error occurred while loading the current map's daily results. Please try again later.\", // eslint-disable-line\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n stopPlayback() {\r\n if (!this.isPlaying) return;\r\n\r\n this.togglePlayback();\r\n }\r\n\r\n togglePlayback() {\r\n if (this.isPlaying) {\r\n clearInterval(this.playInterval);\r\n } else {\r\n this.playInterval = setInterval(() => {\r\n this.currentPlaybackFrame =\r\n this.currentPlaybackFrame === this.playbackFrames.length - 1\r\n ? 0\r\n : this.currentPlaybackFrame + 1;\r\n }, 1000);\r\n }\r\n\r\n this.isPlaying = !this.isPlaying;\r\n }\r\n\r\n getRemediationInProgressCount(pointRemediations) {\r\n if (!pointRemediations) return 0;\r\n\r\n return pointRemediations.reduce((count, r) => count + (r.status === 2 ? 1 : 0), 0);\r\n }\r\n\r\n getRemediationCompletedCount(pointRemediations) {\r\n if (!pointRemediations) return 0;\r\n\r\n return pointRemediations.reduce((count, r) => count + (r.status > 2 ? 1 : 0), 0);\r\n }\r\n\r\n setSelectedPoint(point) {\r\n this.selectedPoint = point;\r\n this.sidebarView = 'list';\r\n\r\n if (point) {\r\n point.xOriginal = point.x;\r\n point.yOriginal = point.y;\r\n\r\n if (this.pointSelectionMode === MapDashboardSelectionMode.SINGLE) {\r\n this.points.forEach((p) => (p.isSelected = false));\r\n point.isSelected = true;\r\n\r\n if (point.isSelected) this.ensurePointInView(point);\r\n }\r\n }\r\n }\r\n\r\n ensurePointInView(point) {\r\n if (!point) return;\r\n\r\n var mapContainerBounds = this.mapContainer.getBoundingClientRect();\r\n\r\n var absolutePointX = point.x * this.scale;\r\n var absolutePointY = point.y * this.scale;\r\n if (this.pan !== undefined) {\r\n absolutePointX += this.pan.x;\r\n absolutePointY += this.pan.y;\r\n }\r\n\r\n // Settings\r\n var maxPointRadius = 24;\r\n var mainNavWidth = 50;\r\n var pointBoundary = {\r\n leftX: maxPointRadius + mainNavWidth,\r\n topY: maxPointRadius,\r\n rightX: mapContainerBounds.width - maxPointRadius,\r\n bottomY: mapContainerBounds.height - maxPointRadius,\r\n };\r\n\r\n // If the point's absolute position is within the boundary, return.\r\n if (\r\n absolutePointX > pointBoundary.leftX &&\r\n absolutePointY > pointBoundary.topY &&\r\n absolutePointX < pointBoundary.rightX &&\r\n absolutePointY < pointBoundary.bottomY\r\n )\r\n return;\r\n\r\n // Move point to the center of the map container.\r\n this.panZoom.pan({\r\n x: mapContainerBounds.width / 2 - point.x * this.scale,\r\n y: mapContainerBounds.height / 2 - point.y * this.scale,\r\n });\r\n }\r\n\r\n showPointPopup($event, point) {\r\n if (this.view === 'points') return;\r\n\r\n $event.stopPropagation();\r\n this.setSelectedPoint(point);\r\n\r\n this.showPointDetail(point);\r\n }\r\n\r\n showPointList() {\r\n this.setSelectedPoint(null);\r\n }\r\n\r\n showPointDetail(point) {\r\n if (this.view === 'points') return;\r\n\r\n // Make sure to bring the point into view BEFORE calling setSelectedPoint.\r\n this.ensurePointInView(point);\r\n this.setSelectedPoint(point);\r\n\r\n this.sidebarView = 'detail';\r\n this.loadPointDetailData(point.id);\r\n }\r\n\r\n async loadPointDetailData(pointId) {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.pointTestResults = [];\r\n this.pointPlans = [];\r\n this.pointRemediations = [];\r\n this.failedPointTests = [];\r\n this.pointHasOverdueTasks = false;\r\n\r\n var results = await Promise.all([\r\n !this.canViewResults\r\n ? Promise.resolve([])\r\n : this.pointService.getPointTests(\r\n pointId,\r\n this.mapDashboardQueryFilters.getQueryParams(),\r\n ),\r\n !this.canViewPlans\r\n ? Promise.resolve([])\r\n : (this.planService.getPlansByPoint(pointId, 'fragment') as unknown as any[]),\r\n !this.canViewAllRedmediations\r\n ? Promise.resolve([])\r\n : (this.remediationService.getRemediations({\r\n pointId,\r\n }) as unknown as any[]),\r\n !this.canViewAllTasks\r\n ? Promise.resolve([])\r\n : (this.pointService.getHasOverdueTasks(pointId) as unknown as boolean),\r\n ]);\r\n\r\n this.pointTestResults = results[0] as PointTestResult[];\r\n this.pointTestResultGridOptions.api?.setRowData(this.pointTestResults);\r\n\r\n this.pointPlans = ((results[1] as any[]) || []).filter((p) => p.isActive);\r\n this.pointPlanGridOptions.api?.setRowData(this.pointPlans);\r\n\r\n this.pointRemediations = ((results[2] as any[]) || []).filter((r) => r.isActive);\r\n this.pointRemediationGridOptions.api?.setRowData(this.pointRemediations);\r\n\r\n this.pointHasOverdueTasks = results[3] as boolean;\r\n\r\n this.failedPointTests = this.pointTestResults.filter((t) => t.passed === false); // Must check for 'false' since value can be null.this.\r\n this.generatePointTestMetrics();\r\n } catch (error) {\r\n this.logger.error('Error loading map dashboard point details', error, {\r\n mapId: this.mapId,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map',\r\n 'An error occurred while loading the current map. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n generatePointTestMetrics() {\r\n this.pointTestMetrics = {\r\n totalCount: this.pointTestResults.length,\r\n failedCount: this.pointTestResults.reduce(\r\n (count, t) => count + (t.passed === false ? 1 : 0),\r\n 0,\r\n ),\r\n passedCount: this.pointTestResults.reduce(\r\n (count, t) => count + (t.passed === true ? 1 : 0),\r\n 0,\r\n ),\r\n get failedPercent() {\r\n return this.totalCount === 0\r\n ? 0\r\n : Math.round((100 * this.failedCount) / this.totalCount);\r\n },\r\n get passedPercent() {\r\n return this.totalCount === 0\r\n ? 0\r\n : Math.round((100 * this.passedCount) / this.totalCount);\r\n },\r\n };\r\n }\r\n\r\n showFailedOnlyChanged() {\r\n this.updatePointsView();\r\n }\r\n\r\n pointFilterTextChanged() {\r\n this.updatePointsView();\r\n }\r\n\r\n filterOnRecordStatus(point: Point) {\r\n switch (this.mapDashboardQueryFilters.recordStatusQueryFilters.recordStatus) {\r\n case RecordStatus.ACTIVE:\r\n return point.isActive;\r\n case RecordStatus.DELETED:\r\n return !point.isActive;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n updatePointsView() {\r\n if (!this.points) return;\r\n\r\n var lowerCasedFilterText = this.pointFilterText.toLowerCase();\r\n this.pointsView = this.points.filter(\r\n (p) =>\r\n (!this.showFailedOnly || this.checkFailedTest(p.id)) &&\r\n ((p.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (p.description || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (p.room || '').toLowerCase().indexOf(lowerCasedFilterText) > -1) &&\r\n this.filterOnRecordStatus(p),\r\n );\r\n }\r\n\r\n checkFailedTest(pointId) {\r\n var result = this.results[pointId];\r\n if (!result) return false;\r\n\r\n return (\r\n result.latestSample?.tests?.some((t) => t.passed === false) ||\r\n result.historical?.tests?.some((t) => !!t.failedCount)\r\n );\r\n }\r\n\r\n private acceptAndSetSingleView(collectionTypes: CollectionType[]) {\r\n if (!collectionTypes || collectionTypes.length === 0) {\r\n this.selectedViewOption = MapDashboardViewOption.ALL;\r\n return;\r\n }\r\n\r\n const collectionType = collectionTypes[0];\r\n switch (collectionType) {\r\n case CollectionType.Routine:\r\n this.selectedViewOption = MapDashboardViewOption.ROUTINE;\r\n break;\r\n case CollectionType.Vector:\r\n this.selectedViewOption = MapDashboardViewOption.VECTOR_SWAB;\r\n break;\r\n case CollectionType.CorrectiveAction:\r\n this.selectedViewOption = MapDashboardViewOption.CORRECTIVE_ACTION;\r\n break;\r\n default:\r\n this.selectedViewOption = MapDashboardViewOption.ALL;\r\n }\r\n }\r\n\r\n canActivate(_params: MapDashboardQuery, routeConfig) {\r\n return this.mapDashboardQueryFilters.ensureSingleApplyFilterHandler(routeConfig);\r\n }\r\n\r\n activate(params: MapDashboardQuery) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe('filters.apply', () =>\r\n this.handleApplyFilters(),\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe('filters.clear', () =>\r\n this.handleClearFilters(),\r\n );\r\n this.mapDashboardQueryFilters.setFilterValues(params);\r\n\r\n this.acceptAndSetSingleView(\r\n this.mapDashboardQueryFilters.collectionTypesQueryFilters.collectionTypes,\r\n );\r\n\r\n this.loadPromise = (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.mapId = this.mapDashboardQueryFilters.id;\r\n\r\n this.recordStatusOptions = getRecordStatusOptions();\r\n var results = (await Promise.all([\r\n this.mapService.getMap(this.mapId),\r\n this.pointService.getPoints({\r\n mapIds: [this.mapId],\r\n pointId: params.pointId,\r\n }),\r\n this.mapService.getPlanFilterOptions(this.mapId),\r\n this.mapService.getTestMethodFilterOptions(this.mapId),\r\n this.mapService.getTaskAssigneeFilterOptions(this.mapId),\r\n this.pointTypeService.getPointTypes({\r\n ignoreSpecificationPointTypes: true,\r\n mapId: this.mapId,\r\n }),\r\n this.canViewAllRedmediations\r\n ? this.remediationRootCauseService.getRemediationRootCauseList()\r\n : [],\r\n ])) as any;\r\n\r\n this.map = results[0];\r\n\r\n await this.loadPointData(results[1] as any[] as Point[]);\r\n\r\n // we only want active point rooms.\r\n this.pointRoomOptions = [\r\n ...new Set(this.points.filter((p) => p.room).filter((p) => p.isActive).map((p) => p.room)),\r\n ].map((r) => ({ value: r, title: r }));\r\n this.planOptions = results[2];\r\n this.testMethodOptions = results[3];\r\n this.taskAssigneeOptions = results[4];\r\n this.pointTypeOptions = results[5].map((pt) => ({\r\n title: pt,\r\n value: pt,\r\n }));\r\n this.remediationRootCauseOptions = results[6].map((rrc: RemediationRootCause) => ({\r\n title: rrc.name,\r\n value: rrc.id,\r\n }));\r\n\r\n this.loadResults();\r\n } catch (error) {\r\n this.logger.error('Error loading map dashboard', error, {\r\n mapId: params.id,\r\n });\r\n\r\n await (error.apiErrorCode === 1\r\n ? this.dialogPresenter.showAlert(\r\n 'Error Loading Map',\r\n 'The current map doesnt exist.',\r\n )\r\n : this.dialogPresenter.showAlert(\r\n 'Error Loading Map',\r\n 'An error occurred while loading the current map. Please try again later.',\r\n ));\r\n\r\n this.router.navigateToRoute('map-list');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n async attached() {\r\n this.pointTestResultGridOptions = pointTestResultGrid;\r\n this.pointTestResultGridOptions.onSelectionChanged = (e: SelectionChangedEvent) => {\r\n const selectedNodes = e.api?.getSelectedNodes();\r\n this.pointTestResultIsSelected = selectedNodes.length > 0;\r\n };\r\n this.pointTestResultGridOptions.rowData = this.pointTestResults || [];\r\n new Grid(this.pointTestResultGrid, this.pointTestResultGridOptions);\r\n\r\n this.pointPlanGridOptions = pointPlanGrid;\r\n this.pointPlanGridOptions.rowData = this.pointPlans || [];\r\n new Grid(this.pointPlanGrid, this.pointPlanGridOptions);\r\n\r\n this.pointRemediationGridOptions = pointRemediationGrid;\r\n this.pointRemediationGridOptions.rowData = this.pointRemediations || [];\r\n new Grid(this.pointRemediationGrid, this.pointRemediationGridOptions);\r\n\r\n await this.loadPromise;\r\n\r\n setTimeout(() => {\r\n if (!this.mapSvgElement) return;\r\n\r\n this.panZoom = svgPanZoom(this.mapSvgElement, {\r\n fit: false,\r\n center: false,\r\n zoomEnabled: true,\r\n minZoom: 0.001,\r\n onZoom: (scale) => {\r\n this.scale = scale;\r\n this.savePanZoomSettings();\r\n },\r\n onPan: (pan) => {\r\n this.pan = pan;\r\n this.savePanZoomSettings();\r\n },\r\n });\r\n\r\n var panZoomSettings = this.panZoomSettings && this.panZoomSettings[this.mapId];\r\n if (!panZoomSettings) return;\r\n\r\n this.panZoom.zoom(panZoomSettings.zoom);\r\n this.panZoom.pan(panZoomSettings.pan);\r\n });\r\n }\r\n\r\n async loadPointData(points: Point[] = null) {\r\n if (points === null)\r\n points = (await this.pointService.getPoints({\r\n mapIds: [this.mapId],\r\n })) as unknown as Point[];\r\n\r\n this.points = points;\r\n this.initializePoints();\r\n\r\n this.updatePointsView();\r\n }\r\n\r\n initializePoints() {\r\n this.points.forEach((p) => {\r\n p.isSelected = false;\r\n });\r\n }\r\n\r\n savePanZoomSettings() {\r\n this.mapService.saveDashboardSettings({\r\n panZoom: {\r\n [this.mapId]: {\r\n zoom: this.panZoom.getZoom(),\r\n pan: this.panZoom.getPan(),\r\n },\r\n },\r\n });\r\n }\r\n\r\n pointMouseDown(evt) {\r\n if (this.view !== 'points') return true;\r\n\r\n this.pointMouseDownStartingPoint = {\r\n x: evt.clientX,\r\n y: evt.clientY,\r\n };\r\n\r\n // point selection ?\r\n if (evt.target.classList.contains('draggable')) {\r\n // find the point that is the \"key\" being dragged (multiple can be selected, but only one is technically being dragged)\r\n let pointId = Number(evt.srcElement.pointId);\r\n this.draggingKeyPoint = this.points.find((p) => p.id === pointId);\r\n\r\n // retain the original coords where this point started\r\n this.draggingKeyStartingPoint = {\r\n x: this.draggingKeyPoint.x,\r\n y: this.draggingKeyPoint.y,\r\n };\r\n\r\n this.panZoom.disablePan();\r\n }\r\n\r\n if (!evt.ctrlKey) {\r\n // must be holding ctrl key to start rubberband selection\r\n return true;\r\n }\r\n\r\n // retain the original coords where this point started\r\n this.draggingKeyStartingPoint = this.getTranslatedPointCoordinates(evt);\r\n this.selectionRubberband = {\r\n x: this.draggingKeyStartingPoint.x,\r\n y: this.draggingKeyStartingPoint.y,\r\n width: 0,\r\n height: 0,\r\n };\r\n\r\n this.panZoom.disablePan();\r\n\r\n return false;\r\n }\r\n\r\n pointMouseMove(evt) {\r\n if (!this.draggingKeyStartingPoint) return;\r\n\r\n // get the new (x,y) for the \"key\" plan point being dragged\r\n let draggingPointCoords = this.getTranslatedPointCoordinates(evt);\r\n\r\n // calculate how far the point has travelled from its original location\r\n let draggingOffset = {\r\n x: draggingPointCoords.x - this.draggingKeyStartingPoint.x,\r\n y: draggingPointCoords.y - this.draggingKeyStartingPoint.y,\r\n };\r\n\r\n if (!this.draggingKeyPoint) {\r\n this.selectionRubberband.x =\r\n draggingOffset.x < 0 ? draggingPointCoords.x : this.draggingKeyStartingPoint.x;\r\n this.selectionRubberband.y =\r\n draggingOffset.y < 0 ? draggingPointCoords.y : this.draggingKeyStartingPoint.y;\r\n this.selectionRubberband.width = Math.abs(draggingOffset.x);\r\n this.selectionRubberband.height = Math.abs(draggingOffset.y);\r\n } else this.planPointMouseMouse(evt, draggingPointCoords, draggingOffset);\r\n\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n planPointMouseMouse(evt, draggingPointCoords, draggingOffset) {\r\n if (!this.draggingKeyStartingPoint) return;\r\n\r\n if (evt.movementX !== 0 || evt.movementY !== 0) {\r\n // just started dragging and unselected point w/o ctrl key ??\r\n let deselectOtherPoints =\r\n !this.draggingPointsMoved && !evt.ctrlKey && !this.draggingKeyPoint.isSelected\r\n ? true\r\n : false;\r\n\r\n // iterate selected points and adjust x,y based on how much the original \"key\" point moved\r\n this.points.forEach((p) => {\r\n if (p.id === this.draggingKeyPoint.id) {\r\n p.x = draggingPointCoords.x;\r\n p.y = draggingPointCoords.y;\r\n\r\n // ensure the point is selected if movement starts to occur\r\n if (evt.movementX !== 0 || evt.movementY !== 0) p.isSelected = true;\r\n } else {\r\n if (deselectOtherPoints) p.isSelected = false;\r\n\r\n if (p.isSelected) {\r\n p.x = p.xOriginal + draggingOffset.x;\r\n p.y = p.yOriginal + draggingOffset.y;\r\n }\r\n }\r\n });\r\n\r\n this.draggingPointsMoved = true;\r\n }\r\n }\r\n\r\n pointMouseUp(evt) {\r\n if (this.view !== 'points') return;\r\n\r\n // handle the case where the user doesn't click a plan point and isn't in rubberband selecting\r\n if (\r\n !this.draggingPointsMoved &&\r\n !this.selectionRubberband &&\r\n !evt.ctrlKey &&\r\n this.pointMouseDownStartingPoint\r\n ) {\r\n let clientOffset = {\r\n x: evt.clientX - this.pointMouseDownStartingPoint.x,\r\n y: evt.clientY - this.pointMouseDownStartingPoint.y,\r\n };\r\n\r\n // if the user did a simple click (no pan)\r\n if (!clientOffset.x && !clientOffset.y)\r\n this.points.forEach((p) => (p.isSelected = false));\r\n }\r\n\r\n if (!this.draggingKeyPoint) this.selectionMouseUp(evt);\r\n else this.planPointMouseUp(evt);\r\n\r\n this.draggingKeyPoint = null;\r\n this.draggingKeyStartingPoint = null;\r\n this.draggingPointsMoved = false;\r\n this.selectionRubberband = null;\r\n this.pointMouseDownStartingPoint = null;\r\n\r\n this.panZoom.enablePan();\r\n\r\n return false;\r\n }\r\n\r\n selectionMouseUp(evt) {\r\n if (!this.selectionRubberband) return;\r\n\r\n this.points.forEach((p) => {\r\n let selected = p.x >= this.selectionRubberband.x && p.y >= this.selectionRubberband.y;\r\n selected =\r\n selected && p.x <= this.selectionRubberband.x + this.selectionRubberband.width;\r\n selected =\r\n selected && p.y <= this.selectionRubberband.y + this.selectionRubberband.height;\r\n\r\n if (selected) {\r\n p.isSelected = true;\r\n p.xOriginal = p.x;\r\n p.yOriginal = p.y;\r\n }\r\n });\r\n }\r\n\r\n planPointMouseUp(evt) {\r\n if (!evt.ctrlKey) {\r\n if (evt.movementX === 0 && evt.movementY === 0 && !this.draggingPointsMoved) {\r\n this.draggingKeyPoint.isSelected = true;\r\n this.setSelectedPoint(this.draggingKeyPoint);\r\n this.points.forEach((p) => {\r\n if (p.id !== this.draggingKeyPoint.id) p.isSelected = false;\r\n });\r\n }\r\n } else {\r\n if (!this.draggingPointsMoved)\r\n this.draggingKeyPoint.isSelected = !this.draggingKeyPoint.isSelected;\r\n }\r\n\r\n // retain where the points ended up in-case we de-select & select again\r\n let pointsSelected = this.points.filter((p) => p.isSelected === true);\r\n pointsSelected.forEach((p) => {\r\n p.xOriginal = p.x;\r\n p.yOriginal = p.y;\r\n });\r\n }\r\n\r\n pointHover(point) {\r\n if (!point) return;\r\n\r\n point.isHovered = true;\r\n }\r\n\r\n pointHoverEnd(point) {\r\n if (!point) return;\r\n\r\n point.isHovered = false;\r\n }\r\n\r\n showLatestViewChanged() {\r\n this.mapService.saveDashboardSettings({\r\n showLatestView: this.showLatestView,\r\n });\r\n }\r\n\r\n viewPointSizeChanged() {\r\n this.mapService.saveDashboardSettings({\r\n viewPointSize: parseInt(this.viewPointSize),\r\n });\r\n this.innerPointViewSize = this.viewPointSize - 1;\r\n }\r\n\r\n //TODO: Bind the view options to the filters\r\n private mapSelectedViewToCollectionTypeFilter() {\r\n switch (this.selectedViewOption) {\r\n case MapDashboardViewOption.ROUTINE:\r\n this.mapDashboardQueryFilters.collectionTypesQueryFilters.collectionTypes = [\r\n CollectionType.Routine,\r\n ];\r\n break;\r\n case MapDashboardViewOption.VECTOR_SWAB:\r\n this.mapDashboardQueryFilters.collectionTypesQueryFilters.collectionTypes = [\r\n CollectionType.Vector,\r\n ];\r\n break;\r\n case MapDashboardViewOption.CORRECTIVE_ACTION:\r\n this.mapDashboardQueryFilters.collectionTypesQueryFilters.collectionTypes = [\r\n CollectionType.CorrectiveAction,\r\n ];\r\n break;\r\n default:\r\n this.mapDashboardQueryFilters.collectionTypesQueryFilters.collectionTypes = [];\r\n }\r\n }\r\n\r\n async loadResults() {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.mapSelectedViewToCollectionTypeFilter();\r\n const filters = this.mapDashboardQueryFilters.getQueryParams();\r\n\r\n const [latestResults, historicalResults] = this.canViewResults\r\n ? await Promise.all([\r\n this.mapService.getLatestResults(this.mapId, filters),\r\n this.mapService.getHistoricalResults(this.mapId, filters),\r\n ])\r\n : [[], []];\r\n\r\n this.results = {};\r\n this.updateLatestResults(latestResults);\r\n this.updateHistoricalResults(historicalResults);\r\n this.updatePointsView(); // Update points in case a change in results might hide/show a point.\r\n } catch (error) {\r\n this.logger.error('Error loading map dashboard result data', error, {\r\n mapId: this.mapId,\r\n });\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map Data',\r\n 'An error occurred while loading the current map data. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n ensureResult(pointId) {\r\n if (pointId in this.results) return this.results[pointId];\r\n\r\n return (this.results[pointId] = {\r\n latestSample: {\r\n collectionDate: null,\r\n tests: [],\r\n get allTestsPassed() {\r\n return this.tests.every((t) => t.passed);\r\n },\r\n get anyTestWarned() {\r\n return this.tests.some((t) => t.warn);\r\n },\r\n get totalFailedCount() {\r\n return this.tests.reduce((s, t) => s + (t.passed ? 0 : 1), 0);\r\n },\r\n },\r\n historical: {\r\n tests: [],\r\n get allTestsPassed() {\r\n return this.tests.every((t) => t.failedCount === 0);\r\n },\r\n get anyTestWarned() {\r\n return this.tests.some((t) => t.warningCount > 0);\r\n },\r\n get totalFailedCount() {\r\n return this.tests.reduce(\r\n (totalFailedCount, currentTest) =>\r\n totalFailedCount + currentTest.failedCount,\r\n 0,\r\n );\r\n },\r\n },\r\n });\r\n }\r\n\r\n updateLatestResults(latestResults) {\r\n for (let latestResult of latestResults) {\r\n let result = this.ensureResult(latestResult.pointId);\r\n result.latestSample.collectionDate = latestResult.sampleCollectionDate;\r\n result.latestSample.tests.push({\r\n testMethod: this.testMethodOptions.find(\r\n (tm) => tm.value === latestResult.testMethodId,\r\n ),\r\n passed: latestResult.passed,\r\n warn: latestResult.warn,\r\n });\r\n }\r\n }\r\n\r\n updateHistoricalResults(historicalResults) {\r\n for (let historicalResult of historicalResults) {\r\n let result = this.ensureResult(historicalResult.pointId);\r\n result.historical.tests.push({\r\n testMethod: this.testMethodOptions.find(\r\n (tm) => tm.value === historicalResult.testMethodId,\r\n ),\r\n passedCount: historicalResult.passedCount,\r\n failedCount: historicalResult.failedCount,\r\n warningCount: historicalResult.warningCount,\r\n });\r\n }\r\n }\r\n\r\n createRemediation() {\r\n this.router.navigateToRoute('remediation-detail', {\r\n id: 'create',\r\n testIds: this.pointTestResultGridOptions.api\r\n ?.getSelectedRows()\r\n .map((t: PointTestResult) => t.testId),\r\n mapId: this.mapId,\r\n });\r\n }\r\n\r\n createVectorTasks() {\r\n this.router.navigateToRoute('create-vector-tasks', {\r\n failedTestId: this.pointTestResultGridOptions.api?.getSelectedRows()[0].testId,\r\n });\r\n }\r\n\r\n reloadData() {\r\n this.loadResults();\r\n\r\n if (this.view === 'playback') this.loadPlaybackData();\r\n\r\n if (this.sidebarView === 'detail') this.loadPointDetailData(this.selectedPoint.id);\r\n }\r\n\r\n selectedViewOptionChanged() {\r\n if (!this.mapId) return;\r\n\r\n this.mapSelectedViewToCollectionTypeFilter();\r\n this.router.navigateToRoute(\r\n 'map-dashboard',\r\n this.mapDashboardQueryFilters.getQueryParams(),\r\n );\r\n }\r\n\r\n handleApplyFilters() {\r\n this.router.navigateToRoute(\r\n 'map-dashboard',\r\n this.mapDashboardQueryFilters.getQueryParams(),\r\n );\r\n }\r\n\r\n async handleClearFilters() {\r\n this.mapDashboardQueryFilters.reset();\r\n this.router.navigateToRoute(\r\n 'map-dashboard',\r\n this.mapDashboardQueryFilters.getQueryParams(),\r\n );\r\n }\r\n\r\n zoomIn() {\r\n this.panZoom && this.panZoom.zoomIn();\r\n }\r\n\r\n zoomOut() {\r\n this.panZoom && this.panZoom.zoomOut();\r\n }\r\n\r\n getTranslatedPointCoordinates(event) {\r\n const point = this.mapSvgElement.createSVGPoint();\r\n point.x = event.clientX;\r\n point.y = event.clientY;\r\n\r\n const pan = this.panZoom.getPan();\r\n\r\n // The cursor point, translated into svg coordinates\r\n const cursorPoint = point.matrixTransform(this.mapSvgElement.getScreenCTM().inverse());\r\n\r\n // adjust for zoom\r\n let pixelX = cursorPoint.x / this.scale;\r\n let pixelY = cursorPoint.y / this.scale;\r\n\r\n // adjust for pan\r\n pixelX = Math.round(pixelX - pan.x / this.scale);\r\n pixelY = Math.round(pixelY - pan.y / this.scale);\r\n\r\n return {\r\n x: pixelX,\r\n y: pixelY,\r\n };\r\n }\r\n\r\n async bind() {\r\n this.confirmationTestValueOptionsSubscription = this.bindingEngine\r\n .propertyObserver(\r\n this.mapDashboardQueryFilters.confirmationTestingQueryFilters,\r\n 'testMethodGroup',\r\n )\r\n .subscribe((newValue: string, oldValue: string) => {\r\n this.testMethodGroupChanged(newValue, oldValue);\r\n });\r\n }\r\n\r\n canDeactivate() {\r\n this.confirmationTestValueOptionsSubscription?.dispose();\r\n this.applyFiltersSubscription?.dispose();\r\n this.clearFiltersSubscription?.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { validateTrigger, ValidationController, ValidationControllerFactory, ValidationRules } from 'aurelia-validation';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport UserService from '../../users/user-service';\r\nimport MapAttributeService from '../map-attributes/map-attribute-service';\r\nimport MapService from './map-service';\r\n\r\n@autoinject\r\nexport class MapDetail {\r\n @observable mapPhoto;\r\n\r\n supportedPhotoFormatMessage = 'The following are supported photo formats: .jpg, .jpeg, .png';\r\n\r\n // state\r\n validationController: ValidationController;\r\n formChanged: boolean;\r\n\r\n // permissions\r\n canEditMaps: boolean;\r\n canViewAudit: boolean;\r\n\r\n // data\r\n currentUserOrganizations: any;\r\n map: any;\r\n fileReader: any;\r\n mapAttributes: any[];\r\n propertyDisplayNames: any;\r\n recordChanges: any;\r\n\r\n mapAttributeNames: any;\r\n mapAttributeValues: any;\r\n\r\n mapPhotoInput: any;\r\n mapPhotoDataUrl: any;\r\n\r\n constructor(\r\n private router: Router,\r\n private validationControllerFactory: ValidationControllerFactory,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n private mapService: MapService,\r\n private mapAttributeService: MapAttributeService\r\n ) {\r\n this.router = router;\r\n\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'map-detail';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.userService = userService;\r\n this.mapService = mapService;\r\n this.mapAttributeService = mapAttributeService;\r\n\r\n this.canEditMaps = this.securityService.hasPermission('EditMaps') && !this.securityService.isImpersonating();\r\n this.canViewAudit = this.securityService.isCurrentUserInternal() && this.securityService.isImpersonating();\r\n\r\n this.fileReader = new FileReader();\r\n this.fileReader.addEventListener('load', this.handlePhotoLoad.bind(this));\r\n\r\n this.mapAttributes = [];\r\n\r\n this.propertyDisplayNames = {\r\n 'Name': 'Name',\r\n 'Description': 'Description',\r\n 'PhotoUrl': 'Photo',\r\n 'IsActive': 'Active',\r\n 'OrganizationName': 'Organization Name'\r\n };\r\n }\r\n\r\n activate(params) {\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n var results = await Promise.all([\r\n this.userService.getCurrentUserOrganizations(),\r\n this.mapAttributeService.getMapAttributes(),\r\n params.id === 'create' ?\r\n Promise.resolve({ isActive: true, attributes: [] }) :\r\n await this.mapService.getMap(parseInt(params.id))\r\n ]);\r\n\r\n // Current user organizations must be set before map.\r\n this.currentUserOrganizations = results[0];\r\n\r\n var usedMapAttributes = results[1];\r\n\r\n this.mapAttributeNames = usedMapAttributes.reduce((attributes, attribute) => {\r\n if (!attributes.some(a => a.name.toLowerCase() === attribute.name.toLowerCase()))\r\n attributes.push({ name: attribute.name, value: attribute.name });\r\n\r\n return attributes;\r\n }, []);\r\n this.mapAttributeValues = usedMapAttributes.reduce((attributes, attribute) => {\r\n if (!Object.keys(attributes).find(k => k.toLowerCase() === attribute.name.toLowerCase()))\r\n attributes[attribute.name] = [{ name: attribute.value, value: attribute.value }];\r\n else if (!attributes[attribute.name].some(a => a.value === attribute.value))\r\n attributes[attribute.name].push({ name: attribute.value, value: attribute.value });\r\n\r\n return attributes;\r\n }, {});\r\n this.map = results[2];\r\n\r\n this.mapAttributes.splice(0);\r\n for (let attribute of this.map.attributes) {\r\n this.mapAttributes.push(this.createMapAttribute(attribute.name, attribute.value));\r\n }\r\n\r\n ValidationRules\r\n .ensure('mapPhoto').displayName('Blueprint Image').satisfies(mapPhoto => !!mapPhoto || this.map.photoUrl)\r\n .on(this);\r\n\r\n ValidationRules\r\n .ensure('name').displayName('Name').required()\r\n .ensure('organizationId').displayName('Organization').required()\r\n .on(this.map);\r\n\r\n } catch (error) {\r\n this.logger.error('Error loading map', error, { mapId: params.id });\r\n\r\n await (error.apiErrorCode === 1 ?\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map',\r\n 'The current map doesn\\'t exist.') :\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map',\r\n 'An error occurred while loading the current map. Please try again later.')\r\n );\r\n\r\n this.router.navigateToRoute('map-list');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n createMapAttribute(name = null, value = null) {\r\n return {\r\n name,\r\n value,\r\n valuePlaceholder: 'Select or enter a value',\r\n isLoadingValues: false,\r\n mapAttributeNames: this.mapAttributeNames.slice(0),\r\n mapAttributeValues: (this.mapAttributeValues[name] || []).slice(0)\r\n };\r\n }\r\n\r\n addMapAttribute() {\r\n this.mapAttributes.push(this.createMapAttribute());\r\n this.formChanged = true;\r\n }\r\n\r\n removeMapAttribute(attribute) {\r\n this.mapAttributes.splice(this.mapAttributes.findIndex(a => a === attribute), 1);\r\n this.formChanged = true;\r\n }\r\n\r\n handleMapAttributeNameChange(attribute, newName) {\r\n if (!newName || newName in attribute.mapAttributeValues)\r\n return;\r\n\r\n var originalPlaceholder = attribute.valuePlaceholder;\r\n attribute.isLoadingValues = true;\r\n attribute.valuePlaceholder = 'Loading items...';\r\n attribute.mapAttributeValues = (this.mapAttributeValues[newName] || []).slice(0);\r\n attribute.valuePlaceholder = originalPlaceholder;\r\n attribute.isLoadingValues = false;\r\n }\r\n\r\n handleAttributeNameTagCreated(tag, attribute) {\r\n for (var i = attribute.mapAttributeNames.length - 1; i >= 0; i--) {\r\n if (attribute.mapAttributeNames[i].tag)\r\n attribute.mapAttributeNames.splice(i, 1);\r\n }\r\n\r\n attribute.mapAttributeNames.push(tag);\r\n attribute.name = tag.name;\r\n }\r\n\r\n handleAttributeValueTagCreated(tag, attribute) {\r\n for (var i = attribute.mapAttributeValues.length - 1; i >= 0; i--) {\r\n if (attribute.mapAttributeValues[i].tag)\r\n attribute.mapAttributeValues.splice(i, 1);\r\n }\r\n\r\n attribute.mapAttributeValues.push(tag);\r\n attribute.value = tag.value;\r\n }\r\n\r\n mapPhotoChanged() {\r\n if (!this.mapPhotoInput.files || !this.mapPhotoInput.files.length)\r\n return;\r\n\r\n var file = this.mapPhotoInput.files[0];\r\n if (file.type !== 'image/jpeg' && file.type !== 'image/png') {\r\n this.dialogPresenter.showAlert(\r\n 'Unsupported Photo Format',\r\n this.supportedPhotoFormatMessage);\r\n\r\n this.mapPhotoInput.value = '';\r\n }\r\n\r\n this.fileReader.readAsDataURL(file);\r\n }\r\n\r\n handlePhotoLoad() {\r\n this.mapPhotoDataUrl = this.fileReader.result;\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('map-list');\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid)\r\n return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n this.map.attributes.splice(0);\r\n for (let mapAttribute of this.mapAttributes) {\r\n this.map.attributes.push({\r\n name: mapAttribute.name,\r\n value: mapAttribute.value\r\n });\r\n }\r\n\r\n try {\r\n let savedMap = (await this.mapService.saveMap(this.map, this.mapPhotoInput.files[0])) as any;\r\n this.map.id = savedMap.id;\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Map saved successfully.');\r\n this.router.navigateToRoute('map-detail', { id: this.map.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving map.', error, { map: this.map });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Map',\r\n this.getApiErrorMessage(error.apiErrorCode));\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n if (errorCode === 1200)\r\n return 'The format of the map photo is not a supported format. ' + this.supportedPhotoFormatMessage;\r\n\r\n return 'An error occurred while saving the current map. Please try again later.';\r\n }\r\n\r\n async loadRecordChanges() {\r\n try {\r\n this.pageContext.isLoading = true;\r\n this.recordChanges = await this.mapService.getMapRecordChanges(this.map.id);\r\n } catch (error) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Map Audit',\r\n 'An error occurred while loading the current map audit. Please try again later.');\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, bindable, containerless } from 'aurelia-framework';\r\n\r\n@containerless\r\n@autoinject\r\nexport class MapImage {\r\n @bindable href;\r\n\r\n imageElement: SVGImageElement;\r\n\r\n constructor(private element: Element) {\r\n this.element = element;\r\n }\r\n\r\n attached() {\r\n var image = new Image();\r\n image.addEventListener('load', () => {\r\n this.imageElement = document.createElementNS('http://www.w3.org/2000/svg', 'image');\r\n this.imageElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', this.href);\r\n this.imageElement.setAttributeNS(null, 'x', '0');\r\n this.imageElement.setAttributeNS(null, 'y', '0');\r\n this.imageElement.setAttributeNS(null, 'width', image.width.toString());\r\n this.imageElement.setAttributeNS(null, 'height', image.height.toString());\r\n this.imageElement.setAttributeNS(null, 'data-cy', 'map-image');\r\n\r\n (this.element.parentElement || this.element.parentNode).appendChild(this.imageElement);\r\n });\r\n image.src = this.href;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport { getRecordStatusOptions } from 'record-status';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport UserService from '../../users/user-service';\r\nimport { MapListQuery, MapListQueryFilters } from './map-list-query-filters';\r\nimport MapService from './map-service';\r\n\r\n@autoinject\r\nexport class MapList {\r\n @observable filterText;\r\n @observable selectedMaps;\r\n\r\n // configuration\r\n gridOptions: any;\r\n applyFiltersSubscription: any;\r\n clearFiltersSubscription: any;\r\n\r\n // permissions\r\n canEditMaps: any;\r\n\r\n // state\r\n maps: any;\r\n mapsView: any;\r\n attributes: any[];\r\n\r\n allSelected: boolean;\r\n selectedActiveMaps: any[];\r\n organizations: any;\r\n recordStatusOptions: SelectorOption[];\r\n\r\n mapListQueryFilters: MapListQueryFilters;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private userService: UserService,\r\n private mapService: MapService,\r\n ) {\r\n this.router = router;\r\n this.eventAggregator = eventAggregator;\r\n\r\n this.logger = logger;\r\n this.logger.name = 'map-list';\r\n\r\n this.pageContext = pageContext;\r\n this.dialogPresenter = dialogPresenter;\r\n this.securityService = securityService;\r\n this.userService = userService;\r\n this.mapService = mapService;\r\n this.filterText = '';\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template:\r\n '',\r\n headerCellTemplate:\r\n '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Map Name',\r\n field: 'name',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 150,\r\n sort: 'asc',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Organization',\r\n field: 'organizationName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 150,\r\n },\r\n { suppressMenu: true, headerName: 'Sample Points', field: 'pointCount' },\r\n { suppressMenu: true, headerName: 'Sampling Plans', field: 'planCount' },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Open Remediations',\r\n field: 'openRemediationCount',\r\n },\r\n { suppressMenu: true, headerName: 'Open Tasks', field: 'openTaskCount' },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Unassigned Tasks',\r\n field: 'unassignedTaskCount',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActiveMaps = [];\r\n this.mapListQueryFilters = new MapListQueryFilters();\r\n this.attributes = [];\r\n\r\n this.canEditMaps =\r\n this.securityService.hasPermission('EditMaps') &&\r\n !this.securityService.isImpersonating();\r\n }\r\n\r\n navigateToMapDashboard(id) {\r\n this.router.navigateToRoute('map-dashboard', { id });\r\n }\r\n\r\n navigateToMapDetail(id) {\r\n this.router.navigateToRoute('map-detail', { id });\r\n }\r\n\r\n setSelectedActiveMaps() {\r\n this.selectedActiveMaps = this.mapsView.filter((map) => map.isSelected && map.isActive);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.mapsView.every((map) => map.isSelected);\r\n this.setSelectedActiveMaps();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.mapsView) {\r\n this.allSelected = !this.mapsView.every((map) => map.isSelected);\r\n\r\n for (let map of this.mapsView) map.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActiveMaps();\r\n\r\n return true;\r\n }\r\n\r\n filterTextChanged() {\r\n this.updateMapsView();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.router.navigateToRoute('map-list', this.mapListQueryFilters.getQueryParams());\r\n }\r\n\r\n handleClearFilters() {\r\n this.mapListQueryFilters.reset();\r\n this.router.navigateToRoute('map-list', this.mapListQueryFilters.getQueryParams());\r\n }\r\n\r\n updateMapsView() {\r\n var lowerCasedFilterText = this.filterText.toLowerCase();\r\n\r\n if (this.maps) {\r\n this.mapsView = this.maps.filter(\r\n (u) =>\r\n this.matchSelectedOrganizations(u) &&\r\n ((u.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (u.organizationName || '').toLowerCase().indexOf(lowerCasedFilterText) >\r\n -1),\r\n );\r\n\r\n this.allSelected = this.mapsView.every((map) => map.isSelected);\r\n }\r\n }\r\n\r\n matchSelectedOrganizations(map) {\r\n if (!this.mapListQueryFilters.organizationQueryFilters.organizationIds?.length) return true;\r\n\r\n return this.mapListQueryFilters.organizationQueryFilters.organizationIds.some(\r\n (id: number) => id === map.organizationId,\r\n );\r\n }\r\n\r\n async loadMaps() {\r\n this.maps = await this.mapService.getMaps(this.mapListQueryFilters.getQueryParams());\r\n this.updateMapsView();\r\n }\r\n\r\n canActivate(_params: MapListQuery, routeConfig) {\r\n return this.mapListQueryFilters.ensureSingleApplyFilterHandler(routeConfig);\r\n }\r\n\r\n activate(params: MapListQuery) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe('filters.apply', () =>\r\n this.handleApplyFilters(),\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe('filters.clear', () =>\r\n this.handleClearFilters(),\r\n );\r\n this.mapListQueryFilters.setFilterValues(params);\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n const [userOrganizations, recordStatusOptions] = await Promise.all([\r\n this.userService.getCurrentUserOrganizations(),\r\n getRecordStatusOptions(),\r\n this.loadMaps(),\r\n ]);\r\n\r\n this.organizations = userOrganizations;\r\n this.recordStatusOptions = recordStatusOptions;\r\n } catch (error) {\r\n this.logger.error('Error loading maps.', error);\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Maps',\r\n 'An error occurred while loading the maps. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n deleteMap(map) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete Map', 'Are you sure you want to delete this map?')\r\n .then((confirmed) => {\r\n if (!confirmed) return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.mapService\r\n .deleteMaps([map.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Map deleted successfully.');\r\n\r\n map.isSelected = false;\r\n map.isActive = false;\r\n\r\n this.setSelectedActiveMaps();\r\n })\r\n .catch((error) => {\r\n this.logger.error('Error deleting map.', error, { mapId: map.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, false);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedMaps() {\r\n var mapsToDelete = this.mapsView.filter((u) => u.isSelected);\r\n if (!mapsToDelete.length) return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation(\r\n 'Delete Selected Maps',\r\n 'Are you sure you want to delete the selected maps?',\r\n )\r\n .then((confirmed) => {\r\n if (!confirmed) return;\r\n\r\n var mapIds = mapsToDelete.map((map) => map.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.mapService\r\n .deleteMaps(mapIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected maps deleted successfully.');\r\n\r\n for (let map of mapsToDelete) {\r\n map.isSelected = false;\r\n map.isActive = false;\r\n\r\n this.setSelectedActiveMaps();\r\n }\r\n })\r\n .catch((error) => {\r\n this.logger.error('Error deleting maps.', error, { mapIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multipleMaps) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Deleting Map' + (multipleMaps ? 's' : ''),\r\n this.getApiErrorMessage(error.apiErrorCode, multipleMaps),\r\n );\r\n }\r\n\r\n getApiErrorMessage(errorCode, multipleMaps) {\r\n if (errorCode === 2)\r\n return 'You dont have access to delete the map' + (multipleMaps ? 's' : '');\r\n else\r\n return 'An unexpected error occurred while trying to delete maps. Please try again later.';\r\n }\r\n\r\n canDeactivate() {\r\n this.applyFiltersSubscription?.dispose();\r\n this.clearFiltersSubscription?.dispose();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { FirstDataRenderedEvent } from 'ag-grid-community';\r\nimport { Grid, GridOptions } from 'ag-grid-enterprise/dist/ag-grid-enterprise';\r\nimport { autoinject, observable } from 'aurelia-framework';\r\nimport { setGroupByColumnDefinitions } from 'infrastructure/ag-grid/ag-grouping-helper';\r\nimport { expandRowAtIndex } from 'infrastructure/ag-grid/ag-onfirstdatarendered-handler';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport ValidationErrorFormatter from 'infrastructure/validation/validation-error-formatter';\r\nimport {\r\n isImpersonatingUserOrOrg,\r\n testMethodPopUpManagementNameFormatting,\r\n} from 'test-methods/test-method-helper';\r\nimport TestMethodService from 'test-methods/test-method-service';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport { ActiveTestMethodPlans } from './contracts/active-test-method-plans';\r\nimport { ReplaceTestMethodRequest } from './contracts/replace-test-method-request';\r\nimport { TestMethodReplacemantImpactCounts } from './contracts/test-method-replacement-impact-counts';\r\nimport {\r\n generatePlanManagementColumnDefs,\r\n generatePlanManagementGridOptions,\r\n} from './plan-management-grid';\r\nimport PlanManagementService from './plan-management-service';\r\n\r\nconst planManagementViewBySelectorOptions: SelectorOption[] = [\r\n { title: 'Test Method Name', value: 'testMethodName' },\r\n { title: 'Organization', value: 'organizationName' },\r\n];\r\nconst replacementDescription = (impactCounts: TestMethodReplacemantImpactCounts): string => {\r\n return `This action will impact\r\n ${impactCounts.organizationCount} ${\r\n impactCounts.organizationCount === 1 ? 'organization' : 'organizations'\r\n }, \r\n ${impactCounts.planCount} ${impactCounts.planCount === 1 ? 'plan' : 'plans'} and \r\n ${impactCounts.unassignedTaskCount} unassigned ${\r\n impactCounts.unassignedTaskCount === 1 ? 'task' : 'tasks'\r\n }. \r\n The current test method is also related to \r\n ${impactCounts.specificationCount} ${\r\n impactCounts.specificationCount === 1 ? 'specification' : 'specifications'\r\n }.`;\r\n};\r\n\r\n@autoinject\r\nexport class PlanManagementList {\r\n @observable filterText: string;\r\n viewBySelectorOptions: SelectorOption[];\r\n\r\n private _selectedViewByOption: SelectorOption;\r\n\r\n gridOptions: GridOptions;\r\n allSelected: boolean;\r\n testMethodPlans: ActiveTestMethodPlans[];\r\n canEditPlanManagement: boolean;\r\n planManagementGrid: any;\r\n\r\n constructor(\r\n private dialogPresenter: DialogPresenter,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private securityService: SecurityService,\r\n private planManagementService: PlanManagementService,\r\n private testMethodService: TestMethodService,\r\n ) {\r\n this.logger = logger;\r\n\r\n this.viewBySelectorOptions = planManagementViewBySelectorOptions;\r\n this._selectedViewByOption = this.viewBySelectorOptions[0];\r\n\r\n this.canEditPlanManagement =\r\n this.securityService.hasPermission('EditPlanManagement') &&\r\n !this.securityService.isImpersonating();\r\n }\r\n\r\n groupByColumnDefinitions() {\r\n setGroupByColumnDefinitions(\r\n this.gridOptions,\r\n this._selectedViewByOption,\r\n generatePlanManagementColumnDefs(\r\n this.canEditPlanManagement,\r\n this.replace.bind(this),\r\n this._selectedViewByOption,\r\n isImpersonatingUserOrOrg(\r\n this.securityService.isImpersonating(),\r\n this.securityService.isWorkingUnderOrganization(),\r\n ),\r\n ),\r\n null,\r\n );\r\n }\r\n\r\n public get selectedViewByOption(): SelectorOption {\r\n return this._selectedViewByOption;\r\n }\r\n\r\n public set selectedViewByOption(selectedOption: SelectorOption) {\r\n this._selectedViewByOption = selectedOption;\r\n this.groupByColumnDefinitions();\r\n }\r\n\r\n filterTextChanged(newValue: string) {\r\n this.gridOptions.api.setQuickFilter(newValue);\r\n }\r\n\r\n async replace(data: ActiveTestMethodPlans) {\r\n this.pageContext.isLoading = true;\r\n const { testMethodId, testMethodName, testMethodBillCode } = data;\r\n const impactCounts = await this.planManagementService.getTestMethodReplacementImpactCounts(\r\n testMethodId,\r\n data.organizationId,\r\n );\r\n const testMethods = await this.testMethodService.getTestMethods(data.organizationId, {\r\n externalSource: 'LabVantage',\r\n });\r\n const replacementTestMethods = testMethods\r\n .filter((tm) => tm.id !== testMethodId)\r\n .map((tm) => ({\r\n ...tm,\r\n name: testMethodPopUpManagementNameFormatting(\r\n tm,\r\n this.securityService.isImpersonating(),\r\n this.securityService.isWorkingUnderOrganization(),\r\n ),\r\n }));\r\n\r\n const { output, wasCancelled } = await this.dialogPresenter.showNameValueItemSelector(\r\n `Replace: ${testMethodName} - (${testMethodBillCode})`,\r\n replacementDescription(impactCounts),\r\n 'Select replacement test method',\r\n replacementTestMethods,\r\n 'name',\r\n 'id',\r\n );\r\n if (wasCancelled) {\r\n this.pageContext.isLoading = false;\r\n return;\r\n }\r\n\r\n var replaceTestMethodRequest: ReplaceTestMethodRequest = {\r\n organizationId: data.organizationId,\r\n testMethodId,\r\n replacementTestMethodId: output.id,\r\n };\r\n\r\n try {\r\n await this.planManagementService.replaceTestMethod(replaceTestMethodRequest);\r\n await this.loadActiveTestMethods();\r\n } catch (e) {\r\n this.logger.error('Error replacing test method.', e);\r\n const errorMessage = ValidationErrorFormatter.format(\r\n 'An error occurred while replacing a test method. If the problem persists, please contact customer service.',\r\n e,\r\n );\r\n this.dialogPresenter.showAlert('Error Replacing Test Method', errorMessage);\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n async loadActiveTestMethods() {\r\n this.testMethodPlans = await this.planManagementService.fetchActiveTestMethodPlans();\r\n this.gridOptions?.api.setRowData(this.testMethodPlans);\r\n }\r\n\r\n async canActivate() {\r\n await this.loadActiveTestMethods();\r\n }\r\n\r\n bind() {\r\n this.gridOptions = generatePlanManagementGridOptions(\r\n this.canEditPlanManagement,\r\n this.replace.bind(this),\r\n this._selectedViewByOption,\r\n this.securityService.isImpersonating(),\r\n );\r\n this.gridOptions.rowData = this.testMethodPlans;\r\n this.gridOptions.onFirstDataRendered = (params: FirstDataRenderedEvent) =>\r\n expandRowAtIndex(params, 1);\r\n new Grid(this.planManagementGrid, this.gridOptions);\r\n this.groupByColumnDefinitions();\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { autoinject, BindingEngine, Disposable, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport { getTimeOptions } from 'infrastructure/components/time-selector';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport TimeZoneService from 'infrastructure/time-zone-service';\r\nimport Lab from 'labs/lab';\r\nimport LabService from 'labs/lab-service';\r\nimport { getCollectionTypeOptions } from 'location-testing/collection-type';\r\nimport PointService from 'location-testing/points/point-service';\r\nimport moment from 'moment';\r\nimport SecurityService from 'security/security-service';\r\nimport { testMethodNameFormatting } from 'test-methods/test-method-helper';\r\nimport TestMethodService from 'test-methods/test-method-service';\r\nimport operationsTimingOptions from '../operations-timing-options';\r\nimport PointRisk from '../points/point-risk';\r\nimport GenerateTasksDateSelectionType from './generate-task-date-selection-type';\r\nimport GenerateTasksDistributionMethod from './generate-tasks-distribution-method';\r\nimport GenerateTasksPointZoneDistributionMethod from './generate-tasks-point-zone-distribution-method';\r\nimport Plan from './plan';\r\nimport { toPlanCoverageType } from './plan-coverage-type';\r\nimport PlanService from './plan-service';\r\nimport PlanType from './plan-type';\r\nimport TaskGenerationClientSettings from './task-generation-client-settings';\r\nimport TaskGenerationRequest, {\r\n TaskGenerationZoneDistribution,\r\n TaskRequestPriority,\r\n} from './task-generation-request';\r\nimport TaskGenerationRequestService from './task-generation-request-service';\r\nimport UiPlanCoverage from './ui-plan-coverage';\r\nimport UiSchedule from './ui-schedule';\r\n\r\n@autoinject\r\nexport class GenerateTasks {\r\n @observable blackoutDate: any;\r\n\r\n validationController: ValidationController;\r\n requestedPointCountSubscription: Disposable;\r\n requestedPointCountZone1Subscription: Disposable;\r\n requestedPointCountZone2Subscription: Disposable;\r\n requestedPointCountZone3Subscription: Disposable;\r\n requestedPointCountZone4Subscription: Disposable;\r\n pointZoneDistributionMethodSubscription: Disposable;\r\n dateSelectionTypeSubscription: Disposable;\r\n monthlySwabsSubscription: Disposable;\r\n weeklySwabsSubscription: Disposable;\r\n startDateSubscription: Disposable;\r\n endDateSubscription: Disposable;\r\n\r\n // Security\r\n canEditPlans: boolean;\r\n currentUser: any;\r\n\r\n mapId: number;\r\n plan: Plan;\r\n schedule: any;\r\n recordChanges: any;\r\n pausedPointCount: number;\r\n\r\n testMethodOptions: any[];\r\n selectedTestMethodIds: number[];\r\n\r\n labs: Lab[];\r\n collectionTypeOptions: SelectorOption[];\r\n\r\n dateSelectionType: GenerateTasksDateSelectionType;\r\n taskGenerationRequest: TaskGenerationRequest;\r\n riskLevels: any;\r\n zoneDistributions: any;\r\n zoneDistributionMax: number;\r\n\r\n zonePercentageCount: any;\r\n showZonePercentageCounts: boolean;\r\n\r\n planTypes: any;\r\n timeZones: any;\r\n operationsTimingOptions: any;\r\n planPointRiskBreakdown: any;\r\n planPointZoneBreakdown: any;\r\n\r\n planPointRisks: string[];\r\n\r\n isPaused: boolean;\r\n wasPausedAtLoad: boolean;\r\n isLocked: boolean;\r\n timeCaptions: any;\r\n scheduleMinDate: Date;\r\n targetCollectionTimesInvalid: boolean;\r\n weekBasedTaskDistribution: boolean;\r\n taskCountDisabled: boolean;\r\n monthlySwabs: number;\r\n weeklySwabs: number;\r\n\r\n formChanged: boolean;\r\n\r\n showMainSection: boolean;\r\n showScheduleSection: boolean;\r\n showCollectionTimesSection: boolean;\r\n showBlackoutSection: boolean;\r\n showRiskDistributionSection: boolean;\r\n\r\n constructor(\r\n validationControllerFactory: ValidationControllerFactory,\r\n private router: Router,\r\n private bindingEngine: BindingEngine,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private timeZoneService: TimeZoneService,\r\n private testMethodService: TestMethodService,\r\n private labService: LabService,\r\n private planService: PlanService,\r\n private taskGenerationRequestService: TaskGenerationRequestService,\r\n private planCoverage: UiPlanCoverage,\r\n private pointService: PointService,\r\n ) {\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.logger.name = 'plan-generate-tasks';\r\n\r\n this.canEditPlans =\r\n this.securityService.hasPermission('EditPlans') &&\r\n !this.securityService.isImpersonating();\r\n\r\n this.isLocked = false;\r\n this.wasPausedAtLoad = false;\r\n\r\n this.showMainSection = false;\r\n this.showScheduleSection = false;\r\n this.showRiskDistributionSection = false;\r\n this.showCollectionTimesSection = false;\r\n this.showBlackoutSection = false;\r\n this.taskCountDisabled = false;\r\n this.planPointRisks = ['High', 'Medium', 'Low', 'Unknown'];\r\n this.zoneDistributionMax = 100;\r\n\r\n this.operationsTimingOptions = operationsTimingOptions;\r\n this.collectionTypeOptions = getCollectionTypeOptions();\r\n\r\n this.initSchedule();\r\n\r\n this.timeCaptions = getTimeOptions().reduce((mapping, time) => {\r\n mapping[time.value] = time.title;\r\n return mapping;\r\n }, {});\r\n\r\n this.handleRequestedPointCountChanged = this.handleRequestedPointCountChanged.bind(this);\r\n this.handlePointZoneDistributionMethodChanged =\r\n this.handlePointZoneDistributionMethodChanged.bind(this);\r\n }\r\n\r\n initSchedule() {\r\n var today = new Date();\r\n var minDate = new Date();\r\n minDate.setDate(today.getDate() - 1);\r\n\r\n this.scheduleMinDate = minDate;\r\n this.schedule = { startDate: today };\r\n }\r\n\r\n isPriorityBasedPlan() {\r\n return this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY;\r\n }\r\n\r\n mapDateSelectionTypeToPointDistributionMethod(\r\n dateSelectionType: GenerateTasksDateSelectionType,\r\n ) {\r\n switch (dateSelectionType) {\r\n case GenerateTasksDateSelectionType.BY_MONTH:\r\n return GenerateTasksDistributionMethod.MONTHLY_SWAB;\r\n case GenerateTasksDateSelectionType.BY_WEEK:\r\n return GenerateTasksDistributionMethod.WEEKLY_SWAB;\r\n case GenerateTasksDateSelectionType.BY_DAY:\r\n return GenerateTasksDistributionMethod.DAILY_SWAB;\r\n default:\r\n return this.weekBasedTaskDistribution\r\n ? GenerateTasksDistributionMethod.WEEK_BASED\r\n : GenerateTasksDistributionMethod.SEQUENTIAL;\r\n }\r\n }\r\n\r\n private calcualateEndDate = (taskGenerationRequest: TaskGenerationRequest): Date => {\r\n switch (this.dateSelectionType) {\r\n case GenerateTasksDateSelectionType.BY_MONTH:\r\n return moment(taskGenerationRequest.startDate)\r\n .add(Number(this.monthlySwabs), 'months')\r\n .startOf('month')\r\n .add(-1, 'days')\r\n .format('YYYY-MM-DD') as any as Date;\r\n case GenerateTasksDateSelectionType.BY_WEEK:\r\n return moment(taskGenerationRequest.startDate)\r\n .add(Number(this.weeklySwabs), 'weeks')\r\n .add(-1, 'days')\r\n .format('YYYY-MM-DD') as any as Date;\r\n default:\r\n return moment(taskGenerationRequest.endDate).format('YYYY-MM-DD') as any as Date;\r\n }\r\n };\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n prepareTaskRequestForSubmission(request: TaskGenerationRequest) {\r\n const copy = JSON.parse(JSON.stringify(request)) as TaskGenerationRequest;\r\n delete request.riskPriorities;\r\n\r\n copy.startDate = moment(request.startDate).format('YYYY-MM-DD') as any as Date;\r\n copy.endDate = this.calcualateEndDate(request);\r\n\r\n copy.requestedTaskCount = Number(copy.requestedTaskCount);\r\n\r\n copy.pointDistributionMethod = this.mapDateSelectionTypeToPointDistributionMethod(\r\n this.dateSelectionType,\r\n );\r\n\r\n if (this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY) {\r\n let highTaskRiskPriority = {\r\n risk: PointRisk.HIGH.toString(),\r\n percentage: Number(this.riskLevels.high),\r\n } as TaskRequestPriority;\r\n\r\n let mediumTaskRiskPriority = {\r\n risk: PointRisk.MEDIUM.toString(),\r\n percentage: Number(this.riskLevels.medium),\r\n } as TaskRequestPriority;\r\n\r\n let lowTaskRiskPriority = {\r\n risk: PointRisk.LOW.toString(),\r\n percentage: Number(this.riskLevels.low),\r\n } as TaskRequestPriority;\r\n\r\n copy.riskPriorities = [\r\n highTaskRiskPriority,\r\n mediumTaskRiskPriority,\r\n lowTaskRiskPriority,\r\n ];\r\n }\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod !==\r\n GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE\r\n ) {\r\n copy.pointZoneDistributionMethod = GenerateTasksPointZoneDistributionMethod.DISCRETE;\r\n copy.pointZoneDistributions = TaskGenerationZoneDistribution.createAllZonesForServer(\r\n this.taskGenerationRequest.pointZoneDistributionMethod,\r\n this.zoneDistributions,\r\n this.zonePercentageCount,\r\n );\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n )\r\n delete copy.requestedTaskCount;\r\n }\r\n\r\n return copy;\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n initializeTaskRequest() {\r\n // load defaults for the plan\r\n let today = new Date();\r\n let tomorrow = new Date();\r\n tomorrow.setDate(today.getDate() + 1);\r\n let planSettings = this.taskGenerationRequestService.getPlanSettings(this.plan.id);\r\n\r\n this.taskGenerationRequest = new TaskGenerationRequest();\r\n this.taskGenerationRequest.planId = this.plan.id;\r\n this.taskGenerationRequest.testMethodIds = (this.plan.testMethods ?? []).map((tm) => tm.id);\r\n this.taskGenerationRequest.startDate = today;\r\n this.taskGenerationRequest.endDate = tomorrow;\r\n this.taskGenerationRequest.timeZone = this.plan.schedule.timeZone;\r\n this.taskGenerationRequest.requestedTaskCount =\r\n planSettings?.requestedTaskCount || this.plan.points.length;\r\n this.dateSelectionType =\r\n planSettings?.dateSelectionType || GenerateTasksDateSelectionType.SINGLE_DATE;\r\n\r\n // copy blackout schedule info\r\n this.taskGenerationRequest.blackoutDates = [];\r\n if (this.plan.schedule.blackoutDates)\r\n this.taskGenerationRequest.blackoutDates.push(...this.plan.schedule.blackoutDatesView);\r\n\r\n this.taskGenerationRequest.blackoutSundays = this.plan.schedule.blackoutSundays;\r\n this.taskGenerationRequest.blackoutMondays = this.plan.schedule.blackoutMondays;\r\n this.taskGenerationRequest.blackoutTuesdays = this.plan.schedule.blackoutTuesdays;\r\n this.taskGenerationRequest.blackoutWednesdays = this.plan.schedule.blackoutWednesdays;\r\n this.taskGenerationRequest.blackoutThursdays = this.plan.schedule.blackoutThursdays;\r\n this.taskGenerationRequest.blackoutFridays = this.plan.schedule.blackoutFridays;\r\n this.taskGenerationRequest.blackoutSaturdays = this.plan.schedule.blackoutSaturdays;\r\n this.taskGenerationRequest.collectionType = this.plan.collectionType;\r\n\r\n this.monthlySwabs = 1;\r\n this.weeklySwabs = 1;\r\n\r\n this.taskGenerationRequest.pointZoneDistributionMethod =\r\n planSettings?.pointZoneDistributionMethod ??\r\n GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE;\r\n\r\n this.riskLevels = {\r\n high: planSettings?.riskPriorities?.find((x) => x.risk === 'High')?.percentage ?? 50,\r\n medium:\r\n planSettings?.riskPriorities?.find((x) => x.risk === 'Medium')?.percentage ?? 25,\r\n low: planSettings?.riskPriorities?.find((x) => x.risk === 'Low')?.percentage ?? 25,\r\n get sum() {\r\n return (\r\n (Number(this.high) || 0) + (Number(this.medium) || 0) + (Number(this.low) || 0)\r\n );\r\n },\r\n };\r\n\r\n this.zoneDistributions = {\r\n zone1: planSettings?.pointZoneDistributions?.find((x) => x.zone === 1)?.value ?? 0,\r\n zone2: planSettings?.pointZoneDistributions?.find((x) => x.zone === 2)?.value ?? 0,\r\n zone3: planSettings?.pointZoneDistributions?.find((x) => x.zone === 3)?.value ?? 0,\r\n zone4: planSettings?.pointZoneDistributions?.find((x) => x.zone === 4)?.value ?? 0,\r\n get sum() {\r\n return (\r\n (Number(this.zone1) || 0) +\r\n (Number(this.zone2) || 0) +\r\n (Number(this.zone3) || 0) +\r\n (Number(this.zone4) || 0)\r\n );\r\n },\r\n };\r\n\r\n this.zonePercentageCount = {\r\n zone1: planSettings?.pointZoneDistributions?.find((x) => x.zone === 1)?.value ?? 0,\r\n zone2: planSettings?.pointZoneDistributions?.find((x) => x.zone === 2)?.value ?? 0,\r\n zone3: planSettings?.pointZoneDistributions?.find((x) => x.zone === 3)?.value ?? 0,\r\n zone4: planSettings?.pointZoneDistributions?.find((x) => x.zone === 4)?.value ?? 0,\r\n // eslint-disable-next-line sonarjs/no-identical-functions\r\n get sum() {\r\n return (\r\n (Number(this.zone1) || 0) +\r\n (Number(this.zone2) || 0) +\r\n (Number(this.zone3) || 0) +\r\n (Number(this.zone4) || 0)\r\n );\r\n },\r\n };\r\n\r\n this.requestedPointCountSubscription = this.bindingEngine\r\n .propertyObserver(this.taskGenerationRequest, 'requestedTaskCount')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.requestedPointCountZone1Subscription = this.bindingEngine\r\n .propertyObserver(this.zoneDistributions, 'zone1')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.requestedPointCountZone2Subscription = this.bindingEngine\r\n .propertyObserver(this.zoneDistributions, 'zone2')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.requestedPointCountZone3Subscription = this.bindingEngine\r\n .propertyObserver(this.zoneDistributions, 'zone3')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.requestedPointCountZone4Subscription = this.bindingEngine\r\n .propertyObserver(this.zoneDistributions, 'zone4')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.pointZoneDistributionMethodSubscription = this.bindingEngine\r\n .propertyObserver(this.taskGenerationRequest, 'pointZoneDistributionMethod')\r\n .subscribe(this.handlePointZoneDistributionMethodChanged);\r\n\r\n this.dateSelectionTypeSubscription = this.bindingEngine\r\n .propertyObserver(this, 'dateSelectionType')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.monthlySwabsSubscription = this.bindingEngine\r\n .propertyObserver(this, 'monthlySwabs')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.weeklySwabsSubscription = this.bindingEngine\r\n .propertyObserver(this, 'weeklySwabs')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.startDateSubscription = this.bindingEngine\r\n .propertyObserver(this.taskGenerationRequest, 'startDate')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.startDateSubscription = this.bindingEngine\r\n .propertyObserver(this.taskGenerationRequest, 'endDate')\r\n .subscribe(this.handleRequestedPointCountChanged);\r\n\r\n this.handleRequestedPointCountChanged();\r\n this.handlePointZoneDistributionMethodChanged();\r\n }\r\n\r\n handleRequestedPointCountChanged() {\r\n this.generateRequestedTaskCount();\r\n }\r\n\r\n handlePointZoneDistributionMethodChanged() {\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n )\r\n this.zoneDistributionMax = 1000;\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.PERCENTAGE\r\n )\r\n this.zoneDistributionMax = 100;\r\n\r\n this.taskCountDisabled =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE;\r\n this.showZonePercentageCounts =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.PERCENTAGE;\r\n\r\n this.validationController.validate({\r\n object: this.zoneDistributions,\r\n propertyName: 'zone1',\r\n });\r\n this.validationController.validate({\r\n object: this.zoneDistributions,\r\n propertyName: 'zone2',\r\n });\r\n this.validationController.validate({\r\n object: this.zoneDistributions,\r\n propertyName: 'zone3',\r\n });\r\n this.validationController.validate({\r\n object: this.zoneDistributions,\r\n propertyName: 'zone4',\r\n });\r\n this.validationController.validate({ object: this.zoneDistributions, propertyName: 'sum' });\r\n\r\n this.generateRequestedTaskCount();\r\n }\r\n\r\n getDates() {\r\n const startDate = moment(this.taskGenerationRequest.startDate);\r\n const endDate = moment(this.taskGenerationRequest.endDate);\r\n const diff = endDate.diff(startDate, 'days');\r\n }\r\n\r\n getMultiplier() {\r\n let multiplier;\r\n switch (this.dateSelectionType) {\r\n case GenerateTasksDateSelectionType.BY_MONTH:\r\n multiplier = this.monthlySwabs;\r\n break;\r\n case GenerateTasksDateSelectionType.BY_WEEK:\r\n multiplier = this.weeklySwabs;\r\n break;\r\n case GenerateTasksDateSelectionType.BY_DAY:\r\n multiplier = Math.ceil(\r\n 1 +\r\n (this.taskGenerationRequest.endDate.getTime() -\r\n this.taskGenerationRequest.startDate.getTime()) /\r\n (1000 * 3600 * 24),\r\n );\r\n break;\r\n default:\r\n multiplier = 1;\r\n }\r\n\r\n return Number.isNaN(multiplier) ? 1 : multiplier;\r\n }\r\n\r\n generateRequestedTaskCount() {\r\n const multiplier = this.getMultiplier();\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE ||\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.PERCENTAGE\r\n ) {\r\n this.taskGenerationRequest.tasksToBeGenerated = Number.isNaN(\r\n this.taskGenerationRequest.requestedTaskCount,\r\n )\r\n ? 0\r\n : this.taskGenerationRequest.requestedTaskCount *\r\n this.schedule.targetCollectionTimes.length *\r\n multiplier;\r\n }\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.PERCENTAGE\r\n ) {\r\n this.zonePercentageCount.zone1 = Math.round(\r\n this.taskGenerationRequest.requestedTaskCount *\r\n (this.zoneDistributions.zone1 / 100),\r\n );\r\n this.zonePercentageCount.zone2 = Math.round(\r\n this.taskGenerationRequest.requestedTaskCount *\r\n (this.zoneDistributions.zone2 / 100),\r\n );\r\n this.zonePercentageCount.zone3 = Math.round(\r\n this.taskGenerationRequest.requestedTaskCount *\r\n (this.zoneDistributions.zone3 / 100),\r\n );\r\n this.zonePercentageCount.zone4 = Math.round(\r\n this.taskGenerationRequest.requestedTaskCount *\r\n (this.zoneDistributions.zone4 / 100),\r\n );\r\n }\r\n\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ) {\r\n this.taskGenerationRequest.tasksToBeGenerated = Number.isNaN(this.zoneDistributions.sum)\r\n ? 0\r\n : this.zoneDistributions.sum *\r\n this.schedule.targetCollectionTimes.length *\r\n multiplier;\r\n }\r\n }\r\n\r\n updateSections() {\r\n let pausedOrLocked = this.isLocked || this.wasPausedAtLoad;\r\n\r\n let planTypesUsingSchedule = [PlanType.SCHEDULED];\r\n let planTypesUsingBlackout = [\r\n PlanType.SCHEDULED,\r\n PlanType.RISK_BASED_PRIORITY,\r\n PlanType.ADHOC,\r\n ];\r\n\r\n this.showMainSection = true;\r\n this.showCollectionTimesSection = true;\r\n this.showScheduleSection = pausedOrLocked\r\n ? false\r\n : planTypesUsingSchedule.includes(this.plan.planTypeId);\r\n this.showBlackoutSection = pausedOrLocked\r\n ? false\r\n : planTypesUsingBlackout.includes(this.plan.planTypeId);\r\n this.showRiskDistributionSection = pausedOrLocked\r\n ? false\r\n : this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY;\r\n }\r\n\r\n generatePointBreakdowns(plan) {\r\n this.planPointRiskBreakdown = {};\r\n this.planPointZoneBreakdown = {};\r\n\r\n if (!plan) return;\r\n\r\n // get the count of the risk levels\r\n let riskLevels = plan?.points.map((p) => p.risk);\r\n this.planPointRiskBreakdown = riskLevels.reduce(\r\n (a, c) => ((a[c] = (a[c] || 0) + 1), a),\r\n Object.create(null),\r\n );\r\n\r\n let zones = plan?.points.map((p) => p.zone);\r\n this.planPointZoneBreakdown = zones.reduce(\r\n (a, c) => ((a[c] = (a[c] || 0) + 1), a),\r\n Object.create(null),\r\n );\r\n }\r\n\r\n activate(params) {\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.currentUser = this.securityService.getEffectiveUser();\r\n this.mapId = parseInt(params.mapId);\r\n let planId = parseInt(params.id);\r\n this.planCoverage.planId = planId;\r\n\r\n const [labs, planTypes, plan, timeZones] = await Promise.all([\r\n this.labService.getLabs(),\r\n this.planService.getPlanTypes(),\r\n this.planService.getPlan(planId),\r\n this.timeZoneService.getTimeZones(),\r\n ]);\r\n\r\n this.labs = labs;\r\n var lab = labs.find((l) => l.id === plan.labId);\r\n\r\n this.testMethodOptions = (\r\n await this.testMethodService.getTestMethods(plan.organizationId, {\r\n externalSource: lab.externalSource,\r\n })\r\n ).map((tm) => ({\r\n title: testMethodNameFormatting(\r\n tm,\r\n this.securityService.isImpersonating(),\r\n this.securityService.isWorkingUnderOrganization(),\r\n ),\r\n value: tm.id,\r\n }));\r\n\r\n this.planTypes = planTypes;\r\n this.plan = plan;\r\n this.timeZones = timeZones.map((tz) => ({ title: tz.displayName, value: tz.id }));\r\n this.pausedPointCount = this.plan.points.filter(\r\n (p) => p.isPausedPendingRemediation,\r\n ).length;\r\n\r\n const mapId = this.plan.mapId;\r\n\r\n // make sure this is the correct plan type\r\n if (\r\n this.plan.planTypeId !== PlanType.RISK_BASED_PRIORITY &&\r\n this.plan.planTypeId !== PlanType.ADHOC\r\n )\r\n this.router.navigateToRoute('plan-list', { mapId });\r\n\r\n this.generatePointBreakdowns(this.plan);\r\n\r\n // make sure that this plan isn't paused and is active -\r\n this.isLocked = !this.plan.isActive;\r\n this.wasPausedAtLoad = this.plan.isPaused;\r\n if (this.isLocked || this.wasPausedAtLoad)\r\n this.router.navigateToRoute('plan-list', { mapId });\r\n\r\n this.mapId = mapId;\r\n const schedule = new UiSchedule();\r\n schedule.loadViewFrom(this.plan.schedule);\r\n this.schedule = schedule;\r\n this.plan.schedule = this.schedule;\r\n\r\n this.initializeTaskRequest();\r\n this.updateSections();\r\n\r\n this.setupValidation();\r\n } catch (error) {\r\n this.logger.error('Error loading plan', error, { planId: params.id });\r\n\r\n await (error.apiErrorCode === 1\r\n ? this.dialogPresenter.showAlert(\r\n 'Error Loading Plan',\r\n 'The current plan does not exist.',\r\n )\r\n : this.dialogPresenter.showAlert(\r\n 'Error Loading Plan',\r\n 'An error occurred while loading the current plan. Please try again later.',\r\n ));\r\n\r\n const mapId = this.plan ? this.plan.mapId || this.mapId : this.mapId;\r\n if (mapId) this.router.navigateToRoute('plan-list', { mapId });\r\n }\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n deactivate() {\r\n this.requestedPointCountSubscription?.dispose();\r\n this.pointZoneDistributionMethodSubscription?.dispose();\r\n this.requestedPointCountZone1Subscription?.dispose();\r\n this.requestedPointCountZone2Subscription?.dispose();\r\n this.requestedPointCountZone3Subscription?.dispose();\r\n this.requestedPointCountZone4Subscription?.dispose();\r\n this.dateSelectionTypeSubscription?.dispose();\r\n this.monthlySwabsSubscription?.dispose();\r\n this.weeklySwabsSubscription?.dispose();\r\n this.startDateSubscription?.dispose();\r\n this.endDateSubscription?.dispose();\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n setupValidation() {\r\n if (this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY) {\r\n ValidationRules.ensure('high')\r\n .required()\r\n .ensure('medium')\r\n .required()\r\n .ensure('low')\r\n .required()\r\n .ensure('sum')\r\n .satisfies((r) => r === 100)\r\n .on(this.riskLevels);\r\n }\r\n\r\n let errorMessageRequestedTaskCount =\r\n 'Requested Task Count is required and must be greater than zero. ';\r\n if (this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY)\r\n errorMessageRequestedTaskCount +=\r\n 'The requested task count can not exceed the number of points included in the plan.';\r\n\r\n ValidationRules.ensure((o: TaskGenerationRequest) => o.planId)\r\n .required()\r\n .ensure((o: TaskGenerationRequest) => o.startDate)\r\n .required()\r\n .ensure((o: TaskGenerationRequest) => o.endDate)\r\n .required()\r\n .when(\r\n () =>\r\n this.dateSelectionType === GenerateTasksDateSelectionType.DATE_RANGE ||\r\n this.dateSelectionType === GenerateTasksDateSelectionType.BY_MONTH ||\r\n this.dateSelectionType === GenerateTasksDateSelectionType.BY_DAY,\r\n )\r\n .satisfies((endDate: Date, o: TaskGenerationRequest) => {\r\n if (!endDate || !o.startDate) return false;\r\n\r\n return (\r\n moment(o.endDate).isSame(o.startDate, 'day') ||\r\n moment(o.endDate).isAfter(o.startDate, 'day')\r\n );\r\n })\r\n .when(\r\n () =>\r\n this.dateSelectionType === GenerateTasksDateSelectionType.BY_MONTH ||\r\n this.dateSelectionType === GenerateTasksDateSelectionType.DATE_RANGE ||\r\n this.dateSelectionType === GenerateTasksDateSelectionType.BY_DAY,\r\n )\r\n\r\n .ensure((o: TaskGenerationRequest) => o.requestedTaskCount)\r\n .required()\r\n .satisfies((taskCount) => {\r\n if (this.plan.planTypeId === PlanType.RISK_BASED_PRIORITY)\r\n return taskCount > 0 && taskCount <= this.plan.points.length;\r\n else return taskCount > 0;\r\n })\r\n .withMessage(errorMessageRequestedTaskCount)\r\n\r\n .on(this.taskGenerationRequest);\r\n\r\n let zoneOrPercentErrorMessage =\r\n 'Required when using count or percent method. Must be greater than 0. Percentages must be less than or equal to 100.';\r\n let zoneDoesNotHaveEnoughPointsErrorMessage =\r\n 'The plan does not include enough unique points in this zone to continue.';\r\n\r\n ValidationRules.ensure((o: any) => o.zone1)\r\n .satisfies((zoneValue) => this.validZoneOrPercent(zoneValue as number))\r\n .withMessage(zoneOrPercentErrorMessage)\r\n .satisfies((zoneValue) => this.planHasEnoughUniquePoints(zoneValue as number, 1))\r\n .withMessage(zoneDoesNotHaveEnoughPointsErrorMessage)\r\n\r\n .ensure((o: any) => o.zone2)\r\n .satisfies((zoneValue) => this.validZoneOrPercent(zoneValue as number))\r\n .withMessage(zoneOrPercentErrorMessage)\r\n .satisfies((zoneValue) => this.planHasEnoughUniquePoints(zoneValue as number, 2))\r\n .withMessage(zoneDoesNotHaveEnoughPointsErrorMessage)\r\n\r\n .ensure((o: any) => o.zone3)\r\n .satisfies((zoneValue) => this.validZoneOrPercent(zoneValue as number))\r\n .withMessage(zoneOrPercentErrorMessage)\r\n .satisfies((zoneValue) => this.planHasEnoughUniquePoints(zoneValue as number, 3))\r\n .withMessage(zoneDoesNotHaveEnoughPointsErrorMessage)\r\n\r\n .ensure((o: any) => o.zone4)\r\n .satisfies((zoneValue) => this.validZoneOrPercent(zoneValue as number))\r\n .withMessage(zoneOrPercentErrorMessage)\r\n .satisfies((zoneValue) => this.planHasEnoughUniquePoints(zoneValue as number, 4))\r\n .withMessage(zoneDoesNotHaveEnoughPointsErrorMessage)\r\n\r\n .ensure('sum')\r\n .satisfies((sum: number) => {\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n )\r\n return sum > 0;\r\n\r\n return true;\r\n })\r\n .withMessage('The sum of entries must be greater than 0.')\r\n\r\n .ensure('sum')\r\n .satisfies((sum: number) => {\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.PERCENTAGE\r\n )\r\n return (\r\n Number(this.taskGenerationRequest.requestedTaskCount) ===\r\n this.zonePercentageCount.sum\r\n );\r\n\r\n return true;\r\n })\r\n .withMessage(\r\n 'The sum of the points by zone percentage must equal the requested number of points.',\r\n )\r\n .on(this.zoneDistributions);\r\n\r\n ValidationRules.ensure((o: GenerateTasks) => o.weeklySwabs)\r\n .required()\r\n .min(1)\r\n .max(52)\r\n .when(() => this.dateSelectionType === GenerateTasksDateSelectionType.BY_WEEK)\r\n .ensure((o: GenerateTasks) => o.monthlySwabs)\r\n .required()\r\n .min(1)\r\n .max(12)\r\n .when(() => this.dateSelectionType === GenerateTasksDateSelectionType.BY_MONTH)\r\n .on(this);\r\n }\r\n\r\n validZoneOrPercent(zoneValue) {\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE\r\n )\r\n return true;\r\n\r\n if (zoneValue === null || zoneValue === undefined) return false;\r\n\r\n let countOrPercent: number = Number.parseInt(zoneValue);\r\n if (countOrPercent === null) return false;\r\n\r\n let maxValue =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? this.zoneDistributionMax\r\n : 100;\r\n\r\n return countOrPercent >= 0 && countOrPercent <= maxValue;\r\n }\r\n\r\n // eslint-disable-next-line sonarjs/cognitive-complexity\r\n planHasEnoughUniquePoints(zoneValue, zone: number) {\r\n if (\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.NOT_APPLICABLE\r\n )\r\n return true;\r\n\r\n if (zoneValue === null || zoneValue === undefined) return false;\r\n\r\n let countOrPercent: number = Number.parseInt(zoneValue);\r\n if (countOrPercent === null) return false;\r\n\r\n let zonePointCount = 0;\r\n let zonePointMax = 0;\r\n switch (zone) {\r\n case 1:\r\n zonePointCount =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? countOrPercent\r\n : this.zonePercentageCount.zone1;\r\n zonePointMax =\r\n this.planPointZoneBreakdown[1] !== undefined\r\n ? this.planPointZoneBreakdown[1]\r\n : 0;\r\n break;\r\n\r\n case 2:\r\n zonePointCount =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? countOrPercent\r\n : this.zonePercentageCount.zone2;\r\n zonePointMax =\r\n this.planPointZoneBreakdown[2] !== undefined\r\n ? this.planPointZoneBreakdown[2]\r\n : 0;\r\n break;\r\n\r\n case 3:\r\n zonePointCount =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? countOrPercent\r\n : this.zonePercentageCount.zone3;\r\n zonePointMax =\r\n this.planPointZoneBreakdown[3] !== undefined\r\n ? this.planPointZoneBreakdown[3]\r\n : 0;\r\n break;\r\n\r\n case 4:\r\n zonePointCount =\r\n this.taskGenerationRequest.pointZoneDistributionMethod ===\r\n GenerateTasksPointZoneDistributionMethod.DISCRETE\r\n ? countOrPercent\r\n : this.zonePercentageCount.zone4;\r\n zonePointMax =\r\n this.planPointZoneBreakdown[4] !== undefined\r\n ? this.planPointZoneBreakdown[4]\r\n : 0;\r\n break;\r\n }\r\n\r\n return countOrPercent >= 0 && zonePointCount <= zonePointMax;\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n blackoutDateChanged() {\r\n if (!this.blackoutDate) return;\r\n\r\n let blackoutDate = moment\r\n .utc([\r\n this.blackoutDate.getFullYear(),\r\n this.blackoutDate.getMonth(),\r\n this.blackoutDate.getDate(),\r\n 0,\r\n ])\r\n .toDate();\r\n\r\n if (!this.taskGenerationRequest.blackoutDates)\r\n this.taskGenerationRequest.blackoutDates = [];\r\n\r\n if (\r\n !this.taskGenerationRequest.blackoutDates.some(\r\n (d) => d.getTime() === blackoutDate.getTime(),\r\n )\r\n ) {\r\n this.taskGenerationRequest.blackoutDates.push(blackoutDate);\r\n this.taskGenerationRequest.blackoutDates.sort((a, b) => a.getTime() - b.getTime());\r\n }\r\n\r\n setTimeout(() => {\r\n this.blackoutDate = null;\r\n });\r\n }\r\n\r\n removeBlackoutDate(dateToRemove) {\r\n this.taskGenerationRequest.blackoutDates.splice(\r\n this.taskGenerationRequest.blackoutDates.indexOf(dateToRemove),\r\n 1,\r\n );\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('plan-list', { mapId: this.plan.mapId });\r\n }\r\n\r\n async save() {\r\n if (this.dateSelectionType === GenerateTasksDateSelectionType.SINGLE_DATE)\r\n this.taskGenerationRequest.endDate = this.taskGenerationRequest.startDate;\r\n\r\n var aggregateResult = await this.validationController.validate();\r\n if (!aggregateResult.valid) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n // the db sees all point zone distribution methods as 'Discrete'\r\n let request = this.prepareTaskRequestForSubmission(this.taskGenerationRequest);\r\n await this.taskGenerationRequestService.submit(request);\r\n\r\n // set the local view back to what the client selected.\r\n request.pointZoneDistributionMethod = this.taskGenerationRequest\r\n .pointZoneDistributionMethod as GenerateTasksPointZoneDistributionMethod;\r\n request.pointZoneDistributions = TaskGenerationZoneDistribution.createAllZonesForUI(\r\n request.pointZoneDistributionMethod,\r\n this.zoneDistributions,\r\n this.zonePercentageCount,\r\n );\r\n\r\n let clientSettings = TaskGenerationClientSettings.fromTaskGenerationRequest(\r\n request,\r\n this.dateSelectionType,\r\n );\r\n this.taskGenerationRequestService.savePlanSettings(this.plan.id, clientSettings);\r\n\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Task Generation Request submitted successfully.');\r\n\r\n this.router.navigateToRoute('plan-list', { mapId: this.plan.mapId });\r\n } catch (error) {\r\n this.logger.error('Error saving plan.', error, { plan: this.plan });\r\n this.dialogPresenter.showAlert(\r\n 'Error Generating Tasks',\r\n this.getApiErrorMessage(error.apiErrorCode),\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode: number) {\r\n let message =\r\n 'An error occurred while submitting a task generation request. Please try again later.';\r\n\r\n switch (errorCode) {\r\n case 1202:\r\n message =\r\n 'No points matched your request. Please update the settings and try again later.';\r\n break;\r\n\r\n case 1203:\r\n message =\r\n 'No points matched the specified risk levels. Please update the settings and try again later.';\r\n break;\r\n\r\n case 1204:\r\n message =\r\n 'No matching points for the zone criteria that was specified. Please update the settings and try again later.';\r\n break;\r\n }\r\n\r\n return message;\r\n }\r\n\r\n exportChartData($event: any) {\r\n const {\r\n detail: { coverageType },\r\n } = $event;\r\n const planCoverageType = toPlanCoverageType(coverageType);\r\n const start = moment(this.planCoverage.taskTargetDateTimeStart).utc().toISOString();\r\n const end = moment(this.planCoverage.taskTargetDateTimeEnd).utc().toISOString();\r\n try {\r\n const url = this.planService.exportPlanCoveragePoints(\r\n this.plan.id,\r\n planCoverageType,\r\n start,\r\n end,\r\n );\r\n window.location.href = url;\r\n } catch (error) {\r\n this.logger.error('Error exporting plan points.', error, { plan: this.plan });\r\n this.dialogPresenter.showAlert('Error Exporting Plan Points', error.message);\r\n }\r\n }\r\n}\r\n","module.exports = \"\";","import { autoinject, bindable } from 'aurelia-framework';\r\nimport Chart from 'chart.js';\r\nimport PlanCoverage from './plan-coverage';\r\nimport { planCoverageTypes } from './plan-coverage-type';\r\n\r\n@autoinject\r\nexport class PlanCoveragePieChart {\r\n @bindable chartData: PlanCoverage;\r\n chartCanvas: any;\r\n chart: any;\r\n\r\n constructor(private element: Element) {\r\n }\r\n\r\n chartDataChanged() {\r\n this.applyChartData();\r\n }\r\n\r\n\r\n handleChartClick(coverageType: string) {\r\n const event = new CustomEvent('handle-chart-click', {\r\n detail: { coverageType },\r\n bubbles: true,\r\n });\r\n\r\n this.element.dispatchEvent(event);\r\n }\r\n\r\n attached() {\r\n this.chartCanvas = this.element.querySelector('canvas');\r\n this.chart = new Chart(this.chartCanvas.getContext('2d'), {\r\n type: 'pie',\r\n options: {\r\n legend: {\r\n display: true,\r\n position: 'bottom',\r\n },\r\n onClick: (e: PointerEvent, chartElements: any[]) => {\r\n const { _model: { label }} = chartElements[0];\r\n this.handleChartClick(label);\r\n }\r\n },\r\n });\r\n this.applyChartData();\r\n }\r\n\r\n applyChartData() {\r\n if (!this.chartData || !this.chart) {\r\n return;\r\n }\r\n\r\n this.chart.data = {\r\n labels: [\r\n planCoverageTypes.Collected,\r\n planCoverageTypes.Scheduled,\r\n planCoverageTypes.CollectedAndScheduled,\r\n planCoverageTypes.Unused\r\n ],\r\n datasets: [{\r\n data: [\r\n this.chartData.collectedCount,\r\n this.chartData.scheduledCount,\r\n this.chartData.collectedAndScheduledCount,\r\n this.chartData.unusedCount,\r\n ],\r\n backgroundColor: [\r\n '#1a9869',\r\n '#b6d825',\r\n '#e16127',\r\n '#cc2350',\r\n ]\r\n }]\r\n };\r\n\r\n this.chart.update();\r\n }\r\n\r\n detached() {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n }\r\n }\r\n}\r\n","module.exports = \"\";","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, BindingEngine, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport {\r\n validateTrigger,\r\n ValidationController,\r\n ValidationControllerFactory,\r\n ValidationRules,\r\n} from 'aurelia-validation';\r\nimport { getTimeOptions } from 'infrastructure/components/time-selector';\r\nimport DialogPresenter from 'infrastructure/dialogs/dialog-presenter';\r\nimport Logger from 'infrastructure/logger';\r\nimport PageContext from 'infrastructure/page-context';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport TimeZoneService from 'infrastructure/time-zone-service';\r\nimport Lab from 'labs/lab';\r\nimport LabService from 'labs/lab-service';\r\nimport {\r\n getCollectionTypeOptions,\r\n planTypeIdToCollectionTypes,\r\n} from 'location-testing/collection-type';\r\nimport moment from 'moment';\r\nimport SecurityService from 'security/security-service';\r\nimport TestMethodService from 'test-methods/test-method-service';\r\nimport MapService from '../maps/map-service';\r\nimport operationsTimingOptions from '../operations-timing-options';\r\nimport PointAttributeService from '../point-attributes/point-attribute-service.js';\r\nimport PointSelectorFilter from '../point-selector-filter';\r\nimport PointService from '../points/point-service';\r\nimport RemediationService from '../remediations/remediation-service';\r\nimport Plan from './plan';\r\nimport PlanService from './plan-service';\r\nimport PlanType from './plan-type';\r\nimport TaskDistributionMethod from './task-distribution-method';\r\nimport UiSchedule from './ui-schedule';\r\nimport { testMethodNameFormatting } from 'test-methods/test-method-helper';\r\n\r\n@autoinject\r\nexport class PlanDetail {\r\n @observable selectedTargetCollectionTime: any;\r\n @observable blackoutDate: any;\r\n\r\n validationController: ValidationController;\r\n\r\n // filters\r\n applyFiltersSubscription: Subscription;\r\n clearFiltersSubscription: Subscription;\r\n\r\n // subscriptions\r\n planLabIdChangedSubscription: Subscription;\r\n taskDistributionMethodSubscription: Subscription;\r\n planTypeSubscription: Subscription;\r\n\r\n // Security\r\n canEditPlans: boolean;\r\n canViewAudit: boolean;\r\n currentUser: any;\r\n\r\n organizationId: any;\r\n mapId: number;\r\n remediationId: any;\r\n plan: Plan;\r\n schedule: UiSchedule;\r\n recordChanges: any;\r\n pausedPointCount: number;\r\n\r\n planTypes: any;\r\n labs: Lab[];\r\n testMethods: any;\r\n points: any;\r\n remediations: any;\r\n timeZones: any;\r\n operationsTimingOptions: any;\r\n pointAttributes: any;\r\n collectionTypeOptions: SelectorOption[];\r\n\r\n @observable view: 'default' | 'edit-points';\r\n isPaused: boolean;\r\n wasPausedAtLoad: boolean;\r\n isLocked: boolean;\r\n propertyDisplayNames: any;\r\n timeCaptions: any;\r\n scheduleMinDate: Date;\r\n canEditStartDate: boolean;\r\n targetCollectionTimesInvalid: boolean;\r\n\r\n formChanged: boolean;\r\n planPointSelectorViewModel: any;\r\n showScheduleSection: boolean;\r\n showCollectionTimesSection: boolean;\r\n showBlackoutSection: boolean;\r\n selectedOnly: boolean;\r\n\r\n taskDistributionMethodWeekBased = TaskDistributionMethod.WEEK_BASED;\r\n taskDistributionMethodEven = TaskDistributionMethod.EVEN;\r\n taskDistributionMethodRandom = TaskDistributionMethod.RANDOM;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private bindingEngine: BindingEngine,\r\n validationControllerFactory: ValidationControllerFactory,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private timeZoneService: TimeZoneService,\r\n private mapService: MapService,\r\n private pointService: PointService,\r\n private remediationService: RemediationService,\r\n private planService: PlanService,\r\n private testMethodService: TestMethodService,\r\n private filters: PointSelectorFilter,\r\n private pointAttributeService: PointAttributeService,\r\n private labService: LabService,\r\n ) {\r\n this.validationController = validationControllerFactory.createForCurrentScope();\r\n this.validationController.validateTrigger = validateTrigger.change;\r\n\r\n this.logger.name = 'plan-detail';\r\n\r\n this.canEditPlans =\r\n this.securityService.hasPermission('EditPlans') &&\r\n !this.securityService.isImpersonating();\r\n this.canViewAudit =\r\n this.securityService.isCurrentUserInternal() && this.securityService.isImpersonating();\r\n\r\n this.isLocked = false;\r\n this.wasPausedAtLoad = false;\r\n this.showScheduleSection = false;\r\n this.showCollectionTimesSection = false;\r\n this.showBlackoutSection = false;\r\n\r\n this.operationsTimingOptions = operationsTimingOptions;\r\n this.collectionTypeOptions = getCollectionTypeOptions();\r\n\r\n this.propertyDisplayNames = {\r\n Name: 'Name',\r\n Description: 'Description',\r\n PlanType: 'Plan Type',\r\n Remediation: 'Remediation',\r\n Schedule: 'Schedule',\r\n IsActive: 'Active',\r\n IsPaused: 'Paused',\r\n };\r\n\r\n this.timeCaptions = getTimeOptions().reduce((mapping, time) => {\r\n mapping[time.value] = time.title;\r\n return mapping;\r\n }, {});\r\n\r\n this.view = 'default';\r\n\r\n this.handleApplyFilters = this.handleApplyFilters.bind(this);\r\n this.handleClearFilters = this.handleClearFilters.bind(this);\r\n }\r\n\r\n viewChanged() {\r\n if (this.view === 'edit-points')\r\n this.planPointSelectorViewModel?.resetView(this.pointAttributes);\r\n }\r\n\r\n async loadTestMethods() {\r\n if (!this.plan?.labId) return;\r\n\r\n var lab = this.labs.find((l) => l.id === this.plan.labId);\r\n var testMethods = await this.testMethodService.getTestMethods(this.organizationId, {\r\n externalSource: lab.externalSource,\r\n });\r\n this.testMethods = testMethods.map((tm) => {\r\n tm.title = testMethodNameFormatting(\r\n tm,\r\n this.securityService.isImpersonating(),\r\n this.securityService.isWorkingUnderOrganization(),\r\n );\r\n return tm;\r\n });\r\n \r\n }\r\n\r\n handlePlanLabIdChanged(labId, oldLabId) {\r\n if (!this.plan) return;\r\n\r\n var lab = this.labs.find((l) => l.id === labId);\r\n var oldLab = this.labs.find((l) => l.id === oldLabId);\r\n\r\n if (lab?.externalSource !== oldLab?.externalSource) {\r\n this.loadTestMethods();\r\n this.plan.testMethods = [];\r\n }\r\n }\r\n\r\n handlePlanTypeLevelChanged() {\r\n if (!this.plan) return;\r\n\r\n this.collectionTypeOptions = planTypeIdToCollectionTypes(this.plan.planTypeId);\r\n this.plan.collectionType = null;\r\n this.updateSections();\r\n }\r\n\r\n async handleTaskDistributionMethodChanged() {\r\n if (!this.schedule) return;\r\n\r\n if (this.schedule.taskDistributionMethod == TaskDistributionMethod.WEEK_BASED)\r\n this.schedule.skipDays = 0;\r\n\r\n await this.validationController.validate();\r\n }\r\n\r\n updateSections() {\r\n let planTypesUsingSchedule = [PlanType.SCHEDULED];\r\n this.showScheduleSection = planTypesUsingSchedule.includes(this.plan.planTypeId);\r\n\r\n let planTypesUsingCollectionTimes = [\r\n PlanType.SCHEDULED,\r\n PlanType.RISK_BASED_PRIORITY,\r\n PlanType.ADHOC,\r\n ];\r\n this.showCollectionTimesSection = planTypesUsingCollectionTimes.includes(\r\n this.plan.planTypeId,\r\n );\r\n\r\n let planTypesUsingBlackout = [\r\n PlanType.SCHEDULED,\r\n PlanType.RISK_BASED_PRIORITY,\r\n PlanType.ADHOC,\r\n ];\r\n this.showBlackoutSection = planTypesUsingBlackout.includes(this.plan.planTypeId);\r\n }\r\n\r\n async handleApplyFilters() {\r\n await this.planPointSelectorViewModel.updateGridPoints();\r\n }\r\n\r\n handleClearFilters() {\r\n this.filters.reset();\r\n this.planPointSelectorViewModel.updateGridPoints();\r\n }\r\n\r\n activate(params) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.apply',\r\n this.handleApplyFilters,\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.clear',\r\n this.handleClearFilters,\r\n );\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.currentUser = this.securityService.getEffectiveUser();\r\n this.mapId = parseInt(params.mapId);\r\n this.remediationId = params.remediationId;\r\n\r\n var results = await Promise.all([\r\n this.planService.getPlanTypes(),\r\n params.id === 'create'\r\n ? Promise.resolve({\r\n mapId: this.mapId,\r\n isActive: true,\r\n remediationId: this.remediationId,\r\n planType: PlanType.DISCRETIONARY,\r\n points: [],\r\n })\r\n : this.planService.getPlan(parseInt(params.id)),\r\n this.timeZoneService.getTimeZones(),\r\n ]);\r\n\r\n this.planTypes = results[0];\r\n\r\n this.plan = results[1];\r\n if (params.id !== 'create') this.mapId = this.plan.mapId;\r\n\r\n this.pausedPointCount = this.plan.points.filter(\r\n (p) => p.isPausedPendingRemediation,\r\n ).length;\r\n this.isLocked = !this.plan.isActive;\r\n\r\n this.timeZones = results[2].map((tz) => ({ title: tz.displayName, value: tz.id }));\r\n\r\n const [remediations, points, map, pointAttributes, labs] = (await Promise.all([\r\n this.remediationService.getRemediations({ mapId: this.plan.mapId }),\r\n this.pointService.getPoints({ mapIds: [this.plan.mapId] }),\r\n this.mapService.getMap(this.plan.mapId),\r\n this.pointAttributeService.getPointAttributes(),\r\n this.labService.getLabs(),\r\n ])) as any;\r\n\r\n this.organizationId = map.organizationId;\r\n this.remediations = remediations.filter((p) => p.isActive);\r\n this.points = points.filter((p) => p.isActive);\r\n this.labs = labs;\r\n\r\n await this.loadTestMethods();\r\n this.pointAttributes = pointAttributes;\r\n\r\n this.schedule = new UiSchedule();\r\n this.schedule.loadViewFrom(this.plan.schedule);\r\n this.canEditStartDate =\r\n params.id === 'create' ||\r\n (this.plan.planTypeId === PlanType.SCHEDULED &&\r\n new Date(this.plan.schedule.startDateView).getTime() >\r\n new Date().getTime());\r\n\r\n this.wasPausedAtLoad = this.plan.isPaused;\r\n\r\n if (this.plan.id) this.updateSections();\r\n\r\n this.setupValidation();\r\n\r\n this.planLabIdChangedSubscription = this.bindingEngine\r\n .propertyObserver(this.plan, 'labId')\r\n .subscribe(this.handlePlanLabIdChanged.bind(this));\r\n\r\n this.planTypeSubscription = this.bindingEngine\r\n .propertyObserver(this.plan, 'planTypeId')\r\n .subscribe(this.handlePlanTypeLevelChanged.bind(this));\r\n\r\n this.taskDistributionMethodSubscription = this.bindingEngine\r\n .propertyObserver(this.schedule, 'taskDistributionMethod')\r\n .subscribe(this.handleTaskDistributionMethodChanged.bind(this));\r\n } catch (error) {\r\n this.logger.error('Error loading plan', error, { planId: params.id });\r\n\r\n await (error.apiErrorCode === 1\r\n ? this.dialogPresenter.showAlert(\r\n 'Error Loading Plan',\r\n 'The current plan doesn\\'t exist.',\r\n )\r\n : this.dialogPresenter.showAlert(\r\n 'Error Loading Plan',\r\n 'An error occurred while loading the current plan. Please try again later.',\r\n ));\r\n\r\n const mapId = this.plan ? this.plan.mapId || this.mapId : this.mapId;\r\n if (mapId) this.router.navigateToRoute('plan-list', { mapId });\r\n }\r\n this.pageContext.isLoading = false;\r\n })();\r\n }\r\n\r\n deactivate() {\r\n this.planLabIdChangedSubscription?.dispose();\r\n this.planTypeSubscription?.dispose();\r\n this.taskDistributionMethodSubscription?.dispose();\r\n\r\n this.applyFiltersSubscription?.dispose();\r\n this.clearFiltersSubscription?.dispose();\r\n }\r\n\r\n setupValidation() {\r\n ValidationRules.ensure('name')\r\n .required()\r\n .ensure('planTypeId')\r\n .required()\r\n .ensure('labId')\r\n .required()\r\n .ensure('collectionType')\r\n .required()\r\n .on(this.plan);\r\n\r\n ValidationRules.ensure('startDateView')\r\n .required()\r\n .satisfies((value, o: any) => {\r\n if (\r\n this.plan.planTypeId === PlanType.SCHEDULED &&\r\n o.taskDistributionMethod === TaskDistributionMethod.WEEK_BASED\r\n )\r\n return moment(value).weekday() === 1; // must start on a Monday\r\n\r\n return true;\r\n })\r\n .ensure('endDateView')\r\n .satisfies((value, o: any) => {\r\n // End date is optional\r\n if (value === null || value === '' || value === undefined) return true;\r\n\r\n if (\r\n this.plan.planTypeId === PlanType.SCHEDULED &&\r\n value.setHours(0, 0, 0, 0) >=\r\n new Date(this.schedule.startDate).setHours(0, 0, 0, 0)\r\n )\r\n return moment(value).isValid();\r\n\r\n return false;\r\n })\r\n .ensure('startTime')\r\n .required()\r\n .ensure('endTime')\r\n .required()\r\n .satisfies((v, o: any) => {\r\n if (!v || !o.startTime) return false;\r\n const endTime = parseInt(v.replace(':', ''));\r\n const startTime = parseInt(o.startTime.replace(':', ''));\r\n return endTime > startTime;\r\n })\r\n .ensure('cycleDurationDays')\r\n .required()\r\n .satisfies((value, o: any) => {\r\n if (\r\n this.plan.planTypeId === PlanType.SCHEDULED &&\r\n o.taskDistributionMethod === TaskDistributionMethod.WEEK_BASED\r\n )\r\n return value % 7 === 0 && value > 0;\r\n\r\n return value > 0;\r\n })\r\n .ensure('frequencyMinutes')\r\n .required()\r\n .ensure('skipDays')\r\n .required()\r\n .satisfies((value, o: any) => {\r\n let skipDays = typeof value === 'string' ? parseInt(value) : value;\r\n if (\r\n this.plan.planTypeId === PlanType.SCHEDULED &&\r\n o.taskDistributionMethod === TaskDistributionMethod.WEEK_BASED\r\n )\r\n return skipDays === 0;\r\n\r\n return skipDays >= 0;\r\n })\r\n .ensure('targetCollectionTimes')\r\n .satisfies((targetCollectionTimes) => {\r\n return !!targetCollectionTimes.length;\r\n })\r\n .on(this.schedule);\r\n }\r\n\r\n handleFormChange() {\r\n this.formChanged = true;\r\n }\r\n\r\n selectedTargetCollectionTimeChanged() {\r\n if (!this.selectedTargetCollectionTime) return;\r\n\r\n if (!this.schedule.targetCollectionTimes) this.schedule.targetCollectionTimes = [];\r\n\r\n if (\r\n this.schedule.targetCollectionTimes.find(\r\n (t) => t.time === this.selectedTargetCollectionTime,\r\n )\r\n ) {\r\n setTimeout(() => {\r\n this.selectedTargetCollectionTime = null;\r\n });\r\n return;\r\n }\r\n\r\n this.schedule.targetCollectionTimes.push({\r\n time: this.selectedTargetCollectionTime,\r\n operationsTiming: 'NotSpecified',\r\n });\r\n\r\n this.schedule.targetCollectionTimes.sort(function (b, a) {\r\n var bParts = b.time.split(':').map((n) => parseInt(n));\r\n var aParts = a.time.split(':').map((n) => parseInt(n));\r\n\r\n if (bParts[0] > aParts[0]) return 1;\r\n\r\n if (bParts[0] < aParts[0]) return -1;\r\n\r\n if (bParts[1] > aParts[1]) return 1;\r\n\r\n return -1;\r\n });\r\n\r\n setTimeout(() => {\r\n this.selectedTargetCollectionTime = null;\r\n });\r\n }\r\n\r\n removeTargetCollectionTime(targetCollectionTimeToRemove) {\r\n this.schedule.targetCollectionTimes.splice(\r\n this.schedule.targetCollectionTimes.indexOf(targetCollectionTimeToRemove),\r\n 1,\r\n );\r\n }\r\n\r\n blackoutDateChanged() {\r\n if (!this.blackoutDate) return;\r\n\r\n let blackoutDate = moment\r\n .utc([\r\n this.blackoutDate.getFullYear(),\r\n this.blackoutDate.getMonth(),\r\n this.blackoutDate.getDate(),\r\n 0,\r\n ])\r\n .toDate();\r\n\r\n if (!this.schedule.blackoutDatesView.some((d) => d.getTime() === blackoutDate.getTime())) {\r\n const blackoutDates = this.schedule.blackoutDatesView;\r\n blackoutDates.push(blackoutDate);\r\n this.schedule.blackoutDatesView = blackoutDates;\r\n this.schedule.blackoutDatesView.sort((a, b) => a.getTime() - b.getTime());\r\n }\r\n\r\n setTimeout(() => {\r\n this.blackoutDate = null;\r\n });\r\n }\r\n\r\n removeBlackoutDate(dateToRemove) {\r\n this.schedule.blackoutDatesView.splice(\r\n this.schedule.blackoutDatesView.indexOf(dateToRemove),\r\n 1,\r\n );\r\n }\r\n\r\n cancel() {\r\n this.formChanged = false;\r\n this.router.navigateToRoute('plan-list', { mapId: this.plan.mapId || this.mapId });\r\n }\r\n\r\n async save() {\r\n var aggregateResult = await this.validationController.validate();\r\n\r\n var targetCollectionTimesValidationResult = aggregateResult.results.find(\r\n (r) => r.propertyName === 'targetCollectionTimes',\r\n );\r\n this.targetCollectionTimesInvalid =\r\n targetCollectionTimesValidationResult && !targetCollectionTimesValidationResult.valid;\r\n\r\n if (!aggregateResult.valid) return;\r\n\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n if (\r\n !this.plan.isActive &&\r\n !(await this.dialogPresenter.showConfirmation(\r\n 'Warning',\r\n 'Once a Plan is deactivated, it cannot be reactivated. Are you sure you want to deactivate this plan?',\r\n 'Yes',\r\n 'No',\r\n ))\r\n ) {\r\n this.pageContext.isLoading = false;\r\n return;\r\n }\r\n\r\n if (this.plan.planTypeId === PlanType.DISCRETIONARY) {\r\n delete this.plan.schedule;\r\n this.schedule = new UiSchedule();\r\n }\r\n\r\n this.plan.schedule = this.schedule.toEntity();\r\n this.isPaused = this.wasPausedAtLoad;\r\n let updatedPlan = (await this.planService.savePlan(this.plan)) as any;\r\n this.plan.id = updatedPlan.id;\r\n this.wasPausedAtLoad = this.plan.isPaused;\r\n this.formChanged = false;\r\n this.pageContext.showSuccessOverlay('Plan saved successfully.');\r\n\r\n if (!this.plan.isActive)\r\n this.router.navigateToRoute('plan-list', { mapId: this.plan.mapId || this.mapId });\r\n else\r\n this.router.navigateToRoute('plan-detail', { id: this.plan.id }, { replace: true });\r\n } catch (error) {\r\n this.logger.error('Error saving plan.', error, { plan: this.plan });\r\n this.dialogPresenter.showAlert(\r\n 'Error Saving Plan',\r\n this.getApiErrorMessage(error.apiErrorCode),\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n\r\n getApiErrorMessage(errorCode) {\r\n if (errorCode === 800)\r\n return 'The specified plan name is already in use. Please change the plan name.';\r\n\r\n return 'An error occurred while saving the current plan. Please try again later.';\r\n }\r\n\r\n async loadRecordChanges() {\r\n try {\r\n this.pageContext.isLoading = true;\r\n this.recordChanges = await this.planService.getPlanRecordChanges(this.plan.id);\r\n } catch (error) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Plan Audit',\r\n 'An error occurred while loading the current plan audit. Please try again later.',\r\n );\r\n }\r\n\r\n this.pageContext.isLoading = false;\r\n }\r\n}\r\n","module.exports = \"\\r\\n\";","import { EventAggregator, Subscription } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport SelectorOption from 'infrastructure/selector-option';\r\nimport CollectionType, {\r\n getCollectionTypeOptions,\r\n toCollectionTypeTitle,\r\n} from 'location-testing/collection-type';\r\nimport RecordStatus, { getRecordStatusOptions } from 'record-status';\r\nimport CompareUtility from '../../infrastructure/compare-utility';\r\nimport DialogPresenter from '../../infrastructure/dialogs/dialog-presenter';\r\nimport Logger from '../../infrastructure/logger';\r\nimport PageContext from '../../infrastructure/page-context';\r\nimport SecurityService from '../../security/security-service';\r\nimport PlanService from './plan-service';\r\nimport PlanType from './plan-type';\r\n\r\n@autoinject\r\nexport class PlanList {\r\n @observable filterText;\r\n @observable selectedPlanTypes;\r\n @observable selectedPausedStates;\r\n\r\n // filters\r\n applyFiltersSubscription: Subscription;\r\n clearFiltersSubscription: Subscription;\r\n\r\n recordStatusOptions: SelectorOption[];\r\n selectedRecordStatuses: RecordStatus[];\r\n collectionTypeOptions: SelectorOption[];\r\n selectedCollectionTypes: SelectorOption[];\r\n\r\n allSelected: boolean;\r\n selectedActivePlans: any[];\r\n\r\n // filter status\r\n isFilteringPlanTypes: boolean;\r\n isFilteringPausedStates: boolean;\r\n isFilteringRecords: boolean;\r\n isFilteringCollectionType: boolean;\r\n filterRecordStatusState: string;\r\n\r\n // data\r\n mapId: any;\r\n plans: any;\r\n plansView: any;\r\n planTypes: any;\r\n\r\n // ui\r\n gridOptions: any;\r\n\r\n // security\r\n canEditPlans: boolean;\r\n canGenerateTasks: boolean;\r\n canDeletePlans: boolean;\r\n\r\n constructor(\r\n private router: Router,\r\n private eventAggregator: EventAggregator,\r\n private logger: Logger,\r\n private pageContext: PageContext,\r\n private dialogPresenter: DialogPresenter,\r\n private securityService: SecurityService,\r\n private planService: PlanService,\r\n ) {\r\n this.logger.name = 'plan-list';\r\n\r\n this.selectedPlanTypes = [];\r\n this.selectedPausedStates = [];\r\n this.collectionTypeOptions = getCollectionTypeOptions();\r\n this.selectedCollectionTypes = [];\r\n\r\n this.gridOptions = {\r\n columnDefs: [\r\n {\r\n suppressMenu: true,\r\n template:\r\n '',\r\n headerCellTemplate:\r\n '',\r\n headerClass: 'checkbox',\r\n width: 80,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n pinned: 'left',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Plan Name',\r\n field: 'name',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 150,\r\n sort: 'asc',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Remediation',\r\n field: 'remediationName',\r\n comparator: CompareUtility.compareStringsInsensitive,\r\n width: 150,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Plan Type',\r\n field: 'planTypeId',\r\n template: '${decodePlanType(data.planTypeId)}',\r\n width: 155,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-left',\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Collection Type',\r\n field: 'collectionType',\r\n template: '${decodeCollectionType(data.collectionType)}',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-left',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Cycle Duration (Days)',\r\n field: 'scheduleCycleDurationDays',\r\n template:\r\n '${decodeCycleDays(data.planTypeId, data.scheduleCycleDurationDays)}',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Test Methods',\r\n field: 'testMethodCount',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Sample Points',\r\n field: 'pointCount',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Open Tasks',\r\n field: 'openTaskCount',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Unassigned Tasks',\r\n field: 'unassignedTaskCount',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Paused',\r\n field: 'isPaused',\r\n template: '',\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: 'Active',\r\n field: 'isActive',\r\n template: '',\r\n width: 120,\r\n headerClass: 'text-center',\r\n cellClass: 'medium-text-center',\r\n suppressSizeToFit: true,\r\n },\r\n {\r\n suppressMenu: true,\r\n headerName: '',\r\n template: `\r\n \r\n `,\r\n cellClass: 'medium-text-right row-actions',\r\n headerCellTemplate: '',\r\n headerClass: 'row-actions',\r\n width: 150,\r\n sortable: false,\r\n suppressSizeToFit: true,\r\n },\r\n ],\r\n defaultColDef: { sortable: true, resizable: true },\r\n };\r\n\r\n this.allSelected = false;\r\n this.selectedActivePlans = [];\r\n this.selectedRecordStatuses = [RecordStatus.ACTIVE];\r\n this.canEditPlans =\r\n this.securityService.hasPermission('EditPlans') &&\r\n !this.securityService.isImpersonating();\r\n this.canDeletePlans = this.securityService.hasPermission('DeletePlans');\r\n\r\n this.handleApplyFilters = this.handleApplyFilters.bind(this);\r\n this.handleClearFilters = this.handleClearFilters.bind(this);\r\n }\r\n\r\n decodePlanType(planTypeId: number) {\r\n return this.planTypes.find((t) => t.id === planTypeId).token;\r\n }\r\n\r\n decodeCycleDays(planTypeId: number, scheduleCycleDays: number) {\r\n return planTypeId === PlanType.SCHEDULED ? scheduleCycleDays.toString() : '';\r\n }\r\n\r\n decodeCollectionType(collectionType: CollectionType): string {\r\n return toCollectionTypeTitle(collectionType);\r\n }\r\n\r\n navigateToPlanDetail(id) {\r\n this.router.navigateToRoute('plan-detail', { id });\r\n }\r\n\r\n navigateToGenerateTasks(id) {\r\n this.router.navigateToRoute('plan-generate-tasks', { id });\r\n }\r\n\r\n setSelectedActivePlans() {\r\n this.selectedActivePlans = this.plansView.filter(\r\n (plan) => plan.isSelected && plan.isActive,\r\n );\r\n this.canGenerateTasks =\r\n this.selectedActivePlans.length === 1 &&\r\n (this.selectedActivePlans[0].planTypeId === PlanType.RISK_BASED_PRIORITY ||\r\n this.selectedActivePlans[0].planTypeId === PlanType.ADHOC) &&\r\n this.selectedActivePlans[0].pointCount > 0;\r\n }\r\n\r\n isSelectedChanged() {\r\n this.allSelected = this.plansView.every((plan) => plan.isSelected);\r\n this.setSelectedActivePlans();\r\n }\r\n\r\n allSelectedClicked() {\r\n if (this.plansView) {\r\n this.allSelected = !this.plansView.every((plan) => plan.isSelected);\r\n\r\n for (let plan of this.plansView) plan.isSelected = this.allSelected;\r\n }\r\n\r\n this.setSelectedActivePlans();\r\n\r\n return true;\r\n }\r\n\r\n filterTextChanged() {\r\n this.updatePlansView();\r\n }\r\n\r\n handleApplyFilters() {\r\n this.updatePlansView();\r\n }\r\n\r\n handleClearFilters() {\r\n this.selectedPlanTypes = [];\r\n this.selectedPausedStates = [];\r\n this.selectedRecordStatuses = [RecordStatus.ACTIVE];\r\n this.selectedCollectionTypes = [];\r\n this.updatePlansView();\r\n }\r\n\r\n handleGenerateTasks() {\r\n let selectedPlanId = this.plansView.find((plan) => plan.isSelected).id;\r\n this.navigateToGenerateTasks(selectedPlanId);\r\n }\r\n\r\n updatePlansView() {\r\n var lowerCasedFilterText = this.filterText ? this.filterText.toLowerCase() : '';\r\n\r\n if (this.plans) {\r\n this.plansView = this.plans.filter(\r\n (p) =>\r\n this.matchSelectedPlanTypes(p) &&\r\n this.matchSelectedPausedStates(p) &&\r\n ((p.name || '').toLowerCase().indexOf(lowerCasedFilterText) > -1 ||\r\n (p.remediationStatus || '').toLowerCase().indexOf(lowerCasedFilterText) >\r\n -1 ||\r\n (p.planType || '').toLowerCase().indexOf(lowerCasedFilterText) > -1) &&\r\n this.matchSelectedRecordStatus(p) &&\r\n this.matchSelectedCollectionType(p),\r\n );\r\n\r\n this.allSelected = this.plansView.every((plan) => plan.isSelected);\r\n }\r\n\r\n this.isFilteringPlanTypes = !!this.selectedPlanTypes && !!this.selectedPlanTypes.length;\r\n this.isFilteringPausedStates =\r\n !!this.selectedPausedStates && !!this.selectedPausedStates.length;\r\n this.isFilteringRecords =\r\n !!this.selectedRecordStatuses && this.selectedRecordStatuses.length > 0;\r\n this.filterRecordStatusState = this.isFilteringRecords\r\n ? this.recordStatusOptions.find((o) => o.value === this.selectedRecordStatuses[0]).title\r\n : '';\r\n this.isFilteringCollectionType = this.selectedCollectionTypes.length > 0;\r\n }\r\n\r\n matchSelectedPlanTypes(plan) {\r\n if (!this.selectedPlanTypes || !this.selectedPlanTypes.length) return true;\r\n\r\n return this.selectedPlanTypes.some((o) => o.id === plan.planTypeId);\r\n }\r\n\r\n matchSelectedPausedStates(plan) {\r\n if (!this.selectedPausedStates || !this.selectedPausedStates.length) return true;\r\n\r\n return this.selectedPausedStates.some((o) => o.isPaused === plan.isPaused);\r\n }\r\n\r\n matchSelectedRecordStatus(plan) {\r\n if (\r\n this.selectedRecordStatuses.length === 1 &&\r\n this.selectedRecordStatuses[0] === RecordStatus.ALL\r\n )\r\n return true;\r\n\r\n let filteredIsActiveValue = this.selectedRecordStatuses[0] === RecordStatus.ACTIVE;\r\n return plan.isActive === filteredIsActiveValue;\r\n }\r\n\r\n matchSelectedCollectionType(plan) {\r\n if (this.selectedCollectionTypes.length === 0) return true;\r\n\r\n return this.selectedCollectionTypes.some((ct) => ct.value === plan.collectionType);\r\n }\r\n\r\n activate(params) {\r\n this.applyFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.apply',\r\n this.handleApplyFilters,\r\n );\r\n this.clearFiltersSubscription = this.eventAggregator.subscribe(\r\n 'filters.clear',\r\n this.handleClearFilters,\r\n );\r\n\r\n this.mapId = params.mapId;\r\n\r\n (async () => {\r\n this.pageContext.isLoading = true;\r\n\r\n try {\r\n this.recordStatusOptions = getRecordStatusOptions();\r\n\r\n var [plans, planTypes] = await Promise.all([\r\n this.planService.getPlans(this.mapId),\r\n this.planService.getPlanTypes(),\r\n ]);\r\n\r\n this.plans = plans;\r\n this.updatePlansView();\r\n\r\n this.planTypes = planTypes;\r\n\r\n this.pageContext.isLoading = false;\r\n } catch (error) {\r\n this.logger.error('Error loading plans.', error);\r\n this.pageContext.isLoading = false;\r\n this.dialogPresenter.showAlert(\r\n 'Error Loading Plans',\r\n 'An error occurred while loading the plans. Please try again later.',\r\n );\r\n }\r\n })();\r\n }\r\n\r\n deactivate() {\r\n this.applyFiltersSubscription && this.applyFiltersSubscription.dispose();\r\n this.clearFiltersSubscription && this.clearFiltersSubscription.dispose();\r\n }\r\n\r\n deletePlan(plan) {\r\n this.dialogPresenter\r\n .showConfirmation('Delete Plan', 'Are you sure you want to delete this plan?')\r\n .then((confirmed) => {\r\n if (!confirmed) return;\r\n\r\n this.pageContext.isLoading = true;\r\n this.planService\r\n .deletePlans([plan.id])\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Plan deleted successfully.');\r\n\r\n plan.isSelected = false;\r\n plan.isActive = false;\r\n\r\n this.setSelectedActivePlans();\r\n })\r\n .catch((error) => {\r\n this.logger.error('Error deleting plan.', error, { planId: plan.id });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, false);\r\n });\r\n });\r\n }\r\n\r\n deleteSelectedPlans() {\r\n var plansToDelete = this.plansView.filter((u) => u.isSelected);\r\n if (!plansToDelete.length) return;\r\n\r\n this.dialogPresenter\r\n .showConfirmation(\r\n 'Delete Selected Plans',\r\n 'Are you sure you want to delete the selected plans?',\r\n )\r\n .then((confirmed) => {\r\n if (!confirmed) return;\r\n\r\n var planIds = plansToDelete.map((plan) => plan.id);\r\n\r\n this.pageContext.isLoading = true;\r\n this.planService\r\n .deletePlans(planIds)\r\n .then(() => {\r\n this.pageContext.isLoading = false;\r\n this.pageContext.showSuccessOverlay('Selected plans deleted successfully.');\r\n\r\n for (let plan of plansToDelete) {\r\n plan.isSelected = false;\r\n plan.isActive = false;\r\n\r\n this.setSelectedActivePlans();\r\n }\r\n\r\n this.updatePlansView();\r\n })\r\n .catch((error) => {\r\n this.logger.error('Error deleting plans.', error, { planIds });\r\n this.pageContext.isLoading = false;\r\n this.handleDeleteError(error, true);\r\n });\r\n });\r\n }\r\n\r\n handleDeleteError(error, multiplePlans) {\r\n this.dialogPresenter.showAlert(\r\n 'Error Deleting Plan' + (multiplePlans ? 's' : ''),\r\n this.getApiErrorMessage(error.apiErrorCode, multiplePlans),\r\n );\r\n }\r\n\r\n getApiErrorMessage(errorCode, multiplePlans) {\r\n if (errorCode === 2)\r\n return 'You dont have access to delete the plan' + (multiplePlans ? 's' : '');\r\n\r\n return 'An unexpected error occurred while trying to delete plans. Please try again later.';\r\n }\r\n}\r\n","module.exports = \"